Use Case 1: AWS Rekognition¶
I. Setting up AWS¶
Import all the necessary libraries
import boto3
import json
import pandas as pd
from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
from IPython.display import display
import requests
import zipfile
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import face_recognition
from PIL import Image, ImageDraw, ImageFont, ImageFilter, ImageOps, ImageEnhance
from botocore.exceptions import NoCredentialsError
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score
Set up and upload images to AWS
# Create an S3 client
s3 = boto3.client('s3')
bucket = 'nam-final-exam-1'
s3.create_bucket(Bucket=bucket)
{'ResponseMetadata': {'RequestId': '9EW3134WXTAS5EZB',
'HostId': 'h+X6wfW3y2z3qhasi0SjEysK0M+CleTAJIdZ6Mc776kAT//x0c737N4B7QTLXnPdu6VH2XW5pC8=',
'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amz-id-2': 'h+X6wfW3y2z3qhasi0SjEysK0M+CleTAJIdZ6Mc776kAT//x0c737N4B7QTLXnPdu6VH2XW5pC8=',
'x-amz-request-id': '9EW3134WXTAS5EZB',
'date': 'Mon, 11 Dec 2023 06:55:20 GMT',
'location': '/nam-final-exam-1',
'server': 'AmazonS3',
'content-length': '0'},
'RetryAttempts': 0},
'Location': '/nam-final-exam-1'}
# bucket and region
bucket='nam-final-exam-1'
region='us-east-1'
# list files in local directory
dir_name = '2024_students'
def list_jpeg_files(directory):
"""List all JPEG files in the specified directory."""
jpeg_files = [file for file in os.listdir(directory) if file.lower().endswith(('.jpeg', '.jpg'))]
return jpeg_files
# Replace 'your_directory_path' with the path to the directory you want to search
directory_path = './2024_students'
jpeg_files = list_jpeg_files(directory_path)
print("Images in the directory:", jpeg_files)
Images in the directory: ['Dongqiao_Tang_aged.jpg', 'Hewei_Shen_aged.jpg', 'Jackson_R_Harper_aged.jpg', 'Wei_Tan.jpg', 'Nathanael_Hunter_Kraus.jpg', 'Benjamin_Pyung-Hwa_Aikens_aged.jpg', 'Helen_Kidane_Haile_aged.jpg', 'Samantha_O_Brien_aged.jpg', 'Yiming_Xu_aged.jpg', 'Manling_Shi_aged.jpg', 'Meghan_O_Malley.jpg', 'Eric_Mayo.jpg', 'Haopeng_Liu.jpg', 'Wei_Tan_aged.jpg', 'Jennifer_Ontiveros-Olivas.jpg', 'Nicholas_J_Sundberg_aged.jpg', 'Patrick_Ryan_Weimaker.jpg', 'Zihe_Liu_aged.jpg', 'Manling_Shi.jpg', 'Amanda_Renner_Gild_aged.jpg', 'George_Basil_Economus.jpg', 'Michelle_Monica_Saikali.jpg', 'Joseph_Macon_Barker.jpg', 'Kaitlyn_R_Vickers_aged.jpg', 'Andrea_Chen.jpg', 'Kyle_John_Wiblishauser.jpg', 'Skylour_Sebastian_Winakur.jpg', 'Logan_Trujillo.jpg', 'Xingyu_Wan.jpg', 'Cole_Ritchey_aged.jpg', 'Jiacheng_Wang_aged.jpg', 'Garhett_William_Sessions_aged.jpg', 'Kendall_Ashley_Hilson_aged.jpg', 'Kayla_Marie_Williams_aged.jpg', 'Kaushik_Rajaram_aged.jpg', 'Latham_Alexander_Weaver_aged.jpg', 'Trinity_Nicole_Elliott_aged.jpg', 'Reid_Powers_Walker_aged.jpg', 'Bingnan_Lei_aged.jpg', 'Andrea_Chen_aged.jpg', 'Savannah_Kayla_Littlejohn_aged.jpg', 'Jash_Sanjaybhai_Vachhani_aged.jpg', 'Elizabeth_G_Higgins_aged.jpg', 'Estefani_Santiago_Gatica_aged.jpg', 'Qin_Miao_aged.jpg', 'Yue_Zhou_aged.jpg', 'Niklas_Jozef_Baldis_aged.jpg', 'Hanshuai_Shi.jpg', 'Edward_Cheongjoun_Hyun_aged.jpg', 'Christopher_Craig_Kenney.jpg', 'Xiyan_Huang.jpg', 'Lauren_Elizabeth_Johnson_aged.jpg', 'Angela_Waszkiewicz.jpg', 'Tianyu_Cui.jpg', 'Jiaming_Zhang_aged.jpg', 'Xiaoya_Luo_aged.jpg', 'Nathalie_Lisa_Friedman_aged.jpg', 'Shenger_Zhou_aged.jpg', 'Jiahua_Wu.jpg', 'Hewei_Shen.jpg', 'Andrew_Dubois.jpg', 'Emmanuel_Thomas_George_Skora.jpg', 'John_William_Null_aged.jpg', 'Bingyu_Li.jpg', 'Jodie_Elizabeth_Brine.jpg', 'Meryl_Criswell_Kaduboski.jpg', 'Amanda_Renner_Gild.jpg', 'Michael_Jason_Vejsiri_aged.jpg', 'Patrick_Ryan_Weimaker_aged.jpg', 'Zihe_Liu.jpg', 'Emmanuel_Thomas_George_Skora_aged.jpg', 'Daniel_Madden_Sheedy_aged.jpg', 'Zaul_Alexander_Perez_aged.jpg', 'Lu_Xing_aged.jpg', 'Niklas_Jozef_Baldis.jpg', 'Kendall_Ashley_Hilson.jpg', 'Shenzhe_Lian_aged.jpg', 'Dillon_Hunter_Aryeh_aged.jpg', 'Nathanael_Hunter_Kraus_aged.jpg', 'Tianyi_Yin_aged.jpg', 'Cole_Ritchey.jpg', 'Bingnan_Lei.jpg', 'Zaul_Alexander_Perez.jpg', 'Max_Koontz.jpg', 'Yiming_Xu.jpg', 'Evan_Anderson_Gilbert.jpg', 'Xiyue_Yu_aged.jpg', 'Cheuk_Yui_Marcus_Chan_aged.jpg', 'Shuzhe_Wang_aged.jpg', 'Helen_Kidane_Haile.jpg', 'Harve_E_Criqui.jpg', 'Khushi_Arya_aged.jpg', 'Anne_M_Perry_aged.jpg', 'Jash_Sanjaybhai_Vachhani.jpg', 'George_Basil_Economus_aged.jpg', 'Mary_Michele_Troise_aged.jpg', 'Samantha_O_Brien.jpg', 'Boyan_Wei_aged.jpg', 'Luying_Huang_aged.jpg', 'Meghan_O_Malley_aged.jpg', 'Alfredo_Enrique_Suarez_aged_aged.jpg', 'Boyu_Zheng.jpg', 'Quinn_Poole.jpg', 'Daniel_Madden_Sheedy.jpg', 'Guangxin_Bao.jpg', 'Tianyi_Chen.jpg', 'Andrew_Dubois_aged.jpg', 'Ryan_Marek_Smith.jpg', 'Dillon_Hunter_Aryeh.jpg', 'Meryl_Criswell_Kaduboski_aged.jpg', 'Chioke_K_Bellamy_aged.jpg', 'Marcus_Cole_cooper.jpg', 'Harve_E_Criqui_aged.jpg', 'Anthony_X_Ayala.jpg', 'Nathalie_Lisa_Friedman.jpg', 'Bintong_Zhai_aged.jpg', 'Quinn_Poole_aged.jpg', 'Logan_Trujillo_aged.jpg', 'Savannah_Kayla_Littlejohn.jpg', 'Christopher_Craig_Kenney_aged.jpg', 'Ryan_Marek_Smith_aged.jpg', 'Bryce_Charles_Drynan_aged.jpg', 'Nicolson_Charles_Panos_aged.jpg', 'Yuchen_Qin_aged.jpg', 'Marcus_Cole_cooper_aged.jpg', 'Xiaoyu_Zong_aged.jpg', 'Shuzhe_Wang.jpg', 'Songlin_Liu.jpg', 'Boyu_Zheng_aged.jpg', 'Ruochen_Bao_aged.jpg', 'Millie_C_Garrett.jpg', 'Chengzhan_Shen.jpg', 'Xiaoyang_Zheng.jpg', 'Allen_Gail_Smith.jpg', 'Reid_Powers_Walker.jpg', 'Jeremy_Brian_Nurding_aged.jpg', 'Qian_Chen.jpg', 'Yutong_Ouyang.jpg', 'Natalie_Weiner_aged.jpg', 'Alfredo_Enrique_Suarez_aged.jpg', 'Edward_Cheongjoun_Hyun.jpg', 'Alicia_Rand_Bodoia.jpg', 'Millie_C_Garrett_aged.jpg', 'Whitney_Joyce_Isbell_aged.jpg', 'Hangfei_Lyu_aged.jpg', 'Angela_Waszkiewicz_aged.jpg', 'Shenzhe_Lian.jpg', 'Shenghao_Yang.jpg', 'Yilin_Wang_aged.jpg', 'Andrew_Lloyd_Loftis_aged.jpg', 'Jennifer_Ontiveros-Olivas_aged.jpg', 'Kaushik_Rajaram.jpg', 'Shenger_Zhou.jpg', 'Yanghua_Zhang_aged.jpg', 'Latham_Alexander_Weaver.jpg', 'Jacob_Philip_Rockaway.jpg', 'Khushi_Arya.jpg', 'Skylour_Sebastian_Winakur_aged.jpg', 'Jiahao_Ma_aged.jpg', 'Yutong_Ouyang_aged.jpg', 'Jeremy_Brian_Nurding.jpg', 'Raleigh_Coolidge_Conway.jpg', 'Andrew_Lloyd_Loftis.jpg', 'Ruochen_Bao.jpg', 'Kaamil_Farooqi.jpg', 'Songlin_Liu_aged.jpg', 'Jiahao_Ma.jpg', 'Garhett_William_Sessions.jpg', 'Hangfei_Lyu.jpg', 'Jackson_R_Harper.jpg', 'Michael_Jason_Vejsiri.jpg', 'Yuchen_Qin.jpg', 'Xiaoya_Luo.jpg', 'Cheuk_Yui_Marcus_Chan.jpg', 'Alfredo_Enrique_Suarez.jpg', 'Qin_Miao.jpg', 'Elizabeth_G_Higgins.jpg', 'Evan_Anderson_Gilbert_aged.jpg', 'Sebastian_Andres_Lopez-Ibanez.jpg', 'Natalie_Weiner.jpg', 'Jax_Francis_Revfi_aged.jpg', 'Shanay_Nimish_Sonawala_aged.jpg', 'Jax_Francis_Revfi.jpg', 'Mengyao_Liu_aged.jpg', 'Kaitlyn_R_Vickers.jpg', 'Jodie_Elizabeth_Brine_aged.jpg', 'Anthony_X_Ayala_aged.jpg', 'Shenghao_Yang_aged.jpg', 'Mary_Martha_Milcoff_aged.jpg', 'Christopher_David_Koontz_aged.jpg', 'Eric_Mayo_aged.jpg', 'Michelle_Monica_Saikali_aged.jpg', 'Kyle_John_Wiblishauser_aged.jpg', 'Xiyan_Huang_aged.jpg', 'Anoush_U_Shah_aged.jpg', 'Xingyu_Wan_aged.jpg', 'Hanshuai_Shi_aged.jpg', 'Lu_Xing.jpg', 'Wentong_Guo.jpg', 'Raleigh_Coolidge_Conway_aged.jpg', 'Yilin_Wang.jpg', 'Dongqiao_Tang.jpg', 'Kayla_Marie_Williams.jpg', 'Mengyao_Liu.jpg', 'Trinity_Nicole_Elliott.jpg', 'Siyu_Lin_aged.jpg', 'Max_Koontz_aged.jpg', 'Shanay_Nimish_Sonawala.jpg', 'Luying_Huang.jpg', 'Bintong_Zhai.jpg', 'Haopeng_Liu_aged.jpg', 'Kaamil_Farooqi_aged.jpg', 'Xiaoyu_Zong.jpg', 'Whitney_Joyce_Isbell.jpg', 'Nicholas_J_Sundberg.jpg', 'John_William_Null.jpg', 'Jiacheng_Wang.jpg', 'Tianyi_Yin.jpg', 'Lauren_Elizabeth_Johnson.jpg', 'Chengzhan_Shen_aged.jpg', 'Estefani_Santiago_Gatica.jpg', 'Alicia_Rand_Bodoia_aged.jpg', 'Boyan_Wei.jpg', 'Jiahua_Wu_aged.jpg', 'Allen_Gail_Smith_aged.jpg', 'Xiaoyang_Zheng_aged.jpg', 'Siyu_Lin.jpg', 'Mary_Michele_Troise.jpg', 'Nicolson_Charles_Panos.jpg', 'Tianyu_Cui_aged.jpg', 'Jiaming_Zhang.jpg', 'Xiyue_Yu.jpg', 'Mary_Martha_Milcoff.jpg', 'Bingyu_Li_aged.jpg', 'Benjamin_Pyung-Hwa_Aikens.jpg', 'Tianyi_Chen_aged.jpg', 'Guangxin_Bao_aged.jpg', 'Chioke_K_Bellamy.jpg', 'Joseph_Miller_Hirsch_aged.jpg', 'Anoush_U_Shah.jpg', 'Joseph_Miller_Hirsch.jpg', 'Sebastian_Andres_Lopez-Ibanez_aged.jpg', 'Joseph_Macon_Barker_aged.jpg', 'Christopher_David_Koontz.jpg', 'Bryce_Charles_Drynan.jpg', 'Jacob_Philip_Rockaway_aged.jpg', 'Wentong_Guo_aged.jpg', 'Anne_M_Perry.jpg', 'Yanghua_Zhang.jpg', 'Qian_Chen_aged.jpg', 'Yue_Zhou.jpg']
# upload all files in a directory to S3
wd = os.getcwd()
for file in jpeg_files:
file_path = f"{wd}/2024_students/{file}"
base = os.path.splitext(file)[0]
new_file = base + ".jpg"
print(file_path, new_file)
s3.upload_file(file_path, bucket, new_file)
g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Dongqiao_Tang_aged.jpg Dongqiao_Tang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Hewei_Shen_aged.jpg Hewei_Shen_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jackson_R_Harper_aged.jpg Jackson_R_Harper_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Wei_Tan.jpg Wei_Tan.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nathanael_Hunter_Kraus.jpg Nathanael_Hunter_Kraus.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Benjamin_Pyung-Hwa_Aikens_aged.jpg Benjamin_Pyung-Hwa_Aikens_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Helen_Kidane_Haile_aged.jpg Helen_Kidane_Haile_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Samantha_O_Brien_aged.jpg Samantha_O_Brien_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yiming_Xu_aged.jpg Yiming_Xu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Manling_Shi_aged.jpg Manling_Shi_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Meghan_O_Malley.jpg Meghan_O_Malley.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Eric_Mayo.jpg Eric_Mayo.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Haopeng_Liu.jpg Haopeng_Liu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Wei_Tan_aged.jpg Wei_Tan_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jennifer_Ontiveros-Olivas.jpg Jennifer_Ontiveros-Olivas.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nicholas_J_Sundberg_aged.jpg Nicholas_J_Sundberg_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Patrick_Ryan_Weimaker.jpg Patrick_Ryan_Weimaker.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Zihe_Liu_aged.jpg Zihe_Liu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Manling_Shi.jpg Manling_Shi.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Amanda_Renner_Gild_aged.jpg Amanda_Renner_Gild_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/George_Basil_Economus.jpg George_Basil_Economus.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Michelle_Monica_Saikali.jpg Michelle_Monica_Saikali.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Joseph_Macon_Barker.jpg Joseph_Macon_Barker.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kaitlyn_R_Vickers_aged.jpg Kaitlyn_R_Vickers_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Andrea_Chen.jpg Andrea_Chen.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kyle_John_Wiblishauser.jpg Kyle_John_Wiblishauser.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Skylour_Sebastian_Winakur.jpg Skylour_Sebastian_Winakur.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Logan_Trujillo.jpg Logan_Trujillo.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xingyu_Wan.jpg Xingyu_Wan.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Cole_Ritchey_aged.jpg Cole_Ritchey_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiacheng_Wang_aged.jpg Jiacheng_Wang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Garhett_William_Sessions_aged.jpg Garhett_William_Sessions_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kendall_Ashley_Hilson_aged.jpg Kendall_Ashley_Hilson_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kayla_Marie_Williams_aged.jpg Kayla_Marie_Williams_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kaushik_Rajaram_aged.jpg Kaushik_Rajaram_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Latham_Alexander_Weaver_aged.jpg Latham_Alexander_Weaver_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Trinity_Nicole_Elliott_aged.jpg Trinity_Nicole_Elliott_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Reid_Powers_Walker_aged.jpg Reid_Powers_Walker_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bingnan_Lei_aged.jpg Bingnan_Lei_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Andrea_Chen_aged.jpg Andrea_Chen_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Savannah_Kayla_Littlejohn_aged.jpg Savannah_Kayla_Littlejohn_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jash_Sanjaybhai_Vachhani_aged.jpg Jash_Sanjaybhai_Vachhani_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Elizabeth_G_Higgins_aged.jpg Elizabeth_G_Higgins_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Estefani_Santiago_Gatica_aged.jpg Estefani_Santiago_Gatica_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Qin_Miao_aged.jpg Qin_Miao_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yue_Zhou_aged.jpg Yue_Zhou_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Niklas_Jozef_Baldis_aged.jpg Niklas_Jozef_Baldis_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Hanshuai_Shi.jpg Hanshuai_Shi.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Edward_Cheongjoun_Hyun_aged.jpg Edward_Cheongjoun_Hyun_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Christopher_Craig_Kenney.jpg Christopher_Craig_Kenney.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiyan_Huang.jpg Xiyan_Huang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Lauren_Elizabeth_Johnson_aged.jpg Lauren_Elizabeth_Johnson_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Angela_Waszkiewicz.jpg Angela_Waszkiewicz.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Tianyu_Cui.jpg Tianyu_Cui.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiaming_Zhang_aged.jpg Jiaming_Zhang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiaoya_Luo_aged.jpg Xiaoya_Luo_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nathalie_Lisa_Friedman_aged.jpg Nathalie_Lisa_Friedman_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shenger_Zhou_aged.jpg Shenger_Zhou_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiahua_Wu.jpg Jiahua_Wu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Hewei_Shen.jpg Hewei_Shen.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Andrew_Dubois.jpg Andrew_Dubois.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Emmanuel_Thomas_George_Skora.jpg Emmanuel_Thomas_George_Skora.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/John_William_Null_aged.jpg John_William_Null_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bingyu_Li.jpg Bingyu_Li.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jodie_Elizabeth_Brine.jpg Jodie_Elizabeth_Brine.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Meryl_Criswell_Kaduboski.jpg Meryl_Criswell_Kaduboski.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Amanda_Renner_Gild.jpg Amanda_Renner_Gild.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Michael_Jason_Vejsiri_aged.jpg Michael_Jason_Vejsiri_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Patrick_Ryan_Weimaker_aged.jpg Patrick_Ryan_Weimaker_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Zihe_Liu.jpg Zihe_Liu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Emmanuel_Thomas_George_Skora_aged.jpg Emmanuel_Thomas_George_Skora_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Daniel_Madden_Sheedy_aged.jpg Daniel_Madden_Sheedy_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Zaul_Alexander_Perez_aged.jpg Zaul_Alexander_Perez_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Lu_Xing_aged.jpg Lu_Xing_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Niklas_Jozef_Baldis.jpg Niklas_Jozef_Baldis.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kendall_Ashley_Hilson.jpg Kendall_Ashley_Hilson.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shenzhe_Lian_aged.jpg Shenzhe_Lian_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Dillon_Hunter_Aryeh_aged.jpg Dillon_Hunter_Aryeh_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nathanael_Hunter_Kraus_aged.jpg Nathanael_Hunter_Kraus_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Tianyi_Yin_aged.jpg Tianyi_Yin_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Cole_Ritchey.jpg Cole_Ritchey.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bingnan_Lei.jpg Bingnan_Lei.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Zaul_Alexander_Perez.jpg Zaul_Alexander_Perez.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Max_Koontz.jpg Max_Koontz.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yiming_Xu.jpg Yiming_Xu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Evan_Anderson_Gilbert.jpg Evan_Anderson_Gilbert.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiyue_Yu_aged.jpg Xiyue_Yu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Cheuk_Yui_Marcus_Chan_aged.jpg Cheuk_Yui_Marcus_Chan_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shuzhe_Wang_aged.jpg Shuzhe_Wang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Helen_Kidane_Haile.jpg Helen_Kidane_Haile.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Harve_E_Criqui.jpg Harve_E_Criqui.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Khushi_Arya_aged.jpg Khushi_Arya_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Anne_M_Perry_aged.jpg Anne_M_Perry_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jash_Sanjaybhai_Vachhani.jpg Jash_Sanjaybhai_Vachhani.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/George_Basil_Economus_aged.jpg George_Basil_Economus_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Mary_Michele_Troise_aged.jpg Mary_Michele_Troise_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Samantha_O_Brien.jpg Samantha_O_Brien.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Boyan_Wei_aged.jpg Boyan_Wei_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Luying_Huang_aged.jpg Luying_Huang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Meghan_O_Malley_aged.jpg Meghan_O_Malley_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Alfredo_Enrique_Suarez_aged_aged.jpg Alfredo_Enrique_Suarez_aged_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Boyu_Zheng.jpg Boyu_Zheng.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Quinn_Poole.jpg Quinn_Poole.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Daniel_Madden_Sheedy.jpg Daniel_Madden_Sheedy.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Guangxin_Bao.jpg Guangxin_Bao.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Tianyi_Chen.jpg Tianyi_Chen.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Andrew_Dubois_aged.jpg Andrew_Dubois_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Ryan_Marek_Smith.jpg Ryan_Marek_Smith.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Dillon_Hunter_Aryeh.jpg Dillon_Hunter_Aryeh.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Meryl_Criswell_Kaduboski_aged.jpg Meryl_Criswell_Kaduboski_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Chioke_K_Bellamy_aged.jpg Chioke_K_Bellamy_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Marcus_Cole_cooper.jpg Marcus_Cole_cooper.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Harve_E_Criqui_aged.jpg Harve_E_Criqui_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Anthony_X_Ayala.jpg Anthony_X_Ayala.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nathalie_Lisa_Friedman.jpg Nathalie_Lisa_Friedman.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bintong_Zhai_aged.jpg Bintong_Zhai_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Quinn_Poole_aged.jpg Quinn_Poole_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Logan_Trujillo_aged.jpg Logan_Trujillo_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Savannah_Kayla_Littlejohn.jpg Savannah_Kayla_Littlejohn.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Christopher_Craig_Kenney_aged.jpg Christopher_Craig_Kenney_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Ryan_Marek_Smith_aged.jpg Ryan_Marek_Smith_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bryce_Charles_Drynan_aged.jpg Bryce_Charles_Drynan_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nicolson_Charles_Panos_aged.jpg Nicolson_Charles_Panos_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yuchen_Qin_aged.jpg Yuchen_Qin_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Marcus_Cole_cooper_aged.jpg Marcus_Cole_cooper_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiaoyu_Zong_aged.jpg Xiaoyu_Zong_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shuzhe_Wang.jpg Shuzhe_Wang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Songlin_Liu.jpg Songlin_Liu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Boyu_Zheng_aged.jpg Boyu_Zheng_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Ruochen_Bao_aged.jpg Ruochen_Bao_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Millie_C_Garrett.jpg Millie_C_Garrett.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Chengzhan_Shen.jpg Chengzhan_Shen.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiaoyang_Zheng.jpg Xiaoyang_Zheng.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Allen_Gail_Smith.jpg Allen_Gail_Smith.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Reid_Powers_Walker.jpg Reid_Powers_Walker.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jeremy_Brian_Nurding_aged.jpg Jeremy_Brian_Nurding_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Qian_Chen.jpg Qian_Chen.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yutong_Ouyang.jpg Yutong_Ouyang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Natalie_Weiner_aged.jpg Natalie_Weiner_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Alfredo_Enrique_Suarez_aged.jpg Alfredo_Enrique_Suarez_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Edward_Cheongjoun_Hyun.jpg Edward_Cheongjoun_Hyun.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Alicia_Rand_Bodoia.jpg Alicia_Rand_Bodoia.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Millie_C_Garrett_aged.jpg Millie_C_Garrett_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Whitney_Joyce_Isbell_aged.jpg Whitney_Joyce_Isbell_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Hangfei_Lyu_aged.jpg Hangfei_Lyu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Angela_Waszkiewicz_aged.jpg Angela_Waszkiewicz_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shenzhe_Lian.jpg Shenzhe_Lian.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shenghao_Yang.jpg Shenghao_Yang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yilin_Wang_aged.jpg Yilin_Wang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Andrew_Lloyd_Loftis_aged.jpg Andrew_Lloyd_Loftis_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jennifer_Ontiveros-Olivas_aged.jpg Jennifer_Ontiveros-Olivas_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kaushik_Rajaram.jpg Kaushik_Rajaram.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shenger_Zhou.jpg Shenger_Zhou.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yanghua_Zhang_aged.jpg Yanghua_Zhang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Latham_Alexander_Weaver.jpg Latham_Alexander_Weaver.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jacob_Philip_Rockaway.jpg Jacob_Philip_Rockaway.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Khushi_Arya.jpg Khushi_Arya.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Skylour_Sebastian_Winakur_aged.jpg Skylour_Sebastian_Winakur_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiahao_Ma_aged.jpg Jiahao_Ma_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yutong_Ouyang_aged.jpg Yutong_Ouyang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jeremy_Brian_Nurding.jpg Jeremy_Brian_Nurding.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Raleigh_Coolidge_Conway.jpg Raleigh_Coolidge_Conway.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Andrew_Lloyd_Loftis.jpg Andrew_Lloyd_Loftis.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Ruochen_Bao.jpg Ruochen_Bao.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kaamil_Farooqi.jpg Kaamil_Farooqi.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Songlin_Liu_aged.jpg Songlin_Liu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiahao_Ma.jpg Jiahao_Ma.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Garhett_William_Sessions.jpg Garhett_William_Sessions.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Hangfei_Lyu.jpg Hangfei_Lyu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jackson_R_Harper.jpg Jackson_R_Harper.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Michael_Jason_Vejsiri.jpg Michael_Jason_Vejsiri.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yuchen_Qin.jpg Yuchen_Qin.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiaoya_Luo.jpg Xiaoya_Luo.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Cheuk_Yui_Marcus_Chan.jpg Cheuk_Yui_Marcus_Chan.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Alfredo_Enrique_Suarez.jpg Alfredo_Enrique_Suarez.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Qin_Miao.jpg Qin_Miao.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Elizabeth_G_Higgins.jpg Elizabeth_G_Higgins.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Evan_Anderson_Gilbert_aged.jpg Evan_Anderson_Gilbert_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Sebastian_Andres_Lopez-Ibanez.jpg Sebastian_Andres_Lopez-Ibanez.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Natalie_Weiner.jpg Natalie_Weiner.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jax_Francis_Revfi_aged.jpg Jax_Francis_Revfi_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shanay_Nimish_Sonawala_aged.jpg Shanay_Nimish_Sonawala_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jax_Francis_Revfi.jpg Jax_Francis_Revfi.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Mengyao_Liu_aged.jpg Mengyao_Liu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kaitlyn_R_Vickers.jpg Kaitlyn_R_Vickers.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jodie_Elizabeth_Brine_aged.jpg Jodie_Elizabeth_Brine_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Anthony_X_Ayala_aged.jpg Anthony_X_Ayala_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shenghao_Yang_aged.jpg Shenghao_Yang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Mary_Martha_Milcoff_aged.jpg Mary_Martha_Milcoff_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Christopher_David_Koontz_aged.jpg Christopher_David_Koontz_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Eric_Mayo_aged.jpg Eric_Mayo_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Michelle_Monica_Saikali_aged.jpg Michelle_Monica_Saikali_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kyle_John_Wiblishauser_aged.jpg Kyle_John_Wiblishauser_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiyan_Huang_aged.jpg Xiyan_Huang_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Anoush_U_Shah_aged.jpg Anoush_U_Shah_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xingyu_Wan_aged.jpg Xingyu_Wan_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Hanshuai_Shi_aged.jpg Hanshuai_Shi_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Lu_Xing.jpg Lu_Xing.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Wentong_Guo.jpg Wentong_Guo.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Raleigh_Coolidge_Conway_aged.jpg Raleigh_Coolidge_Conway_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yilin_Wang.jpg Yilin_Wang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Dongqiao_Tang.jpg Dongqiao_Tang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kayla_Marie_Williams.jpg Kayla_Marie_Williams.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Mengyao_Liu.jpg Mengyao_Liu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Trinity_Nicole_Elliott.jpg Trinity_Nicole_Elliott.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Siyu_Lin_aged.jpg Siyu_Lin_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Max_Koontz_aged.jpg Max_Koontz_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Shanay_Nimish_Sonawala.jpg Shanay_Nimish_Sonawala.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Luying_Huang.jpg Luying_Huang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bintong_Zhai.jpg Bintong_Zhai.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Haopeng_Liu_aged.jpg Haopeng_Liu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Kaamil_Farooqi_aged.jpg Kaamil_Farooqi_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiaoyu_Zong.jpg Xiaoyu_Zong.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Whitney_Joyce_Isbell.jpg Whitney_Joyce_Isbell.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nicholas_J_Sundberg.jpg Nicholas_J_Sundberg.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/John_William_Null.jpg John_William_Null.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiacheng_Wang.jpg Jiacheng_Wang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Tianyi_Yin.jpg Tianyi_Yin.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Lauren_Elizabeth_Johnson.jpg Lauren_Elizabeth_Johnson.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Chengzhan_Shen_aged.jpg Chengzhan_Shen_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Estefani_Santiago_Gatica.jpg Estefani_Santiago_Gatica.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Alicia_Rand_Bodoia_aged.jpg Alicia_Rand_Bodoia_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Boyan_Wei.jpg Boyan_Wei.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiahua_Wu_aged.jpg Jiahua_Wu_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Allen_Gail_Smith_aged.jpg Allen_Gail_Smith_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiaoyang_Zheng_aged.jpg Xiaoyang_Zheng_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Siyu_Lin.jpg Siyu_Lin.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Mary_Michele_Troise.jpg Mary_Michele_Troise.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Nicolson_Charles_Panos.jpg Nicolson_Charles_Panos.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Tianyu_Cui_aged.jpg Tianyu_Cui_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jiaming_Zhang.jpg Jiaming_Zhang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Xiyue_Yu.jpg Xiyue_Yu.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Mary_Martha_Milcoff.jpg Mary_Martha_Milcoff.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bingyu_Li_aged.jpg Bingyu_Li_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Benjamin_Pyung-Hwa_Aikens.jpg Benjamin_Pyung-Hwa_Aikens.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Tianyi_Chen_aged.jpg Tianyi_Chen_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Guangxin_Bao_aged.jpg Guangxin_Bao_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Chioke_K_Bellamy.jpg Chioke_K_Bellamy.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Joseph_Miller_Hirsch_aged.jpg Joseph_Miller_Hirsch_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Anoush_U_Shah.jpg Anoush_U_Shah.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Joseph_Miller_Hirsch.jpg Joseph_Miller_Hirsch.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Sebastian_Andres_Lopez-Ibanez_aged.jpg Sebastian_Andres_Lopez-Ibanez_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Joseph_Macon_Barker_aged.jpg Joseph_Macon_Barker_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Christopher_David_Koontz.jpg Christopher_David_Koontz.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Bryce_Charles_Drynan.jpg Bryce_Charles_Drynan.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Jacob_Philip_Rockaway_aged.jpg Jacob_Philip_Rockaway_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Wentong_Guo_aged.jpg Wentong_Guo_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Anne_M_Perry.jpg Anne_M_Perry.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yanghua_Zhang.jpg Yanghua_Zhang.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Qian_Chen_aged.jpg Qian_Chen_aged.jpg g:\My Drive\Fall 2023\Data Management\Final Project/2024_students/Yue_Zhou.jpg Yue_Zhou.jpg
# Check bucket contents
bucket_contents = s3.list_objects_v2(Bucket=bucket)
bucket_contents['Contents']
[{'Key': 'Alfredo_Enrique_Suarez.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 7, tzinfo=tzutc()),
'ETag': '"68446138235873331923f9bcb2a732b8"',
'Size': 2066909,
'StorageClass': 'STANDARD'},
{'Key': 'Alfredo_Enrique_Suarez_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 41, tzinfo=tzutc()),
'ETag': '"81acbfc85db3fba1344f4bcbc85910a1"',
'Size': 108683,
'StorageClass': 'STANDARD'},
{'Key': 'Alfredo_Enrique_Suarez_aged_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 16, tzinfo=tzutc()),
'ETag': '"98f140a6c98c62c9b85f2061e291623b"',
'Size': 96026,
'StorageClass': 'STANDARD'},
{'Key': 'Alicia_Rand_Bodoia.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 42, tzinfo=tzutc()),
'ETag': '"01059adbfc00f70fca643787b893e031"',
'Size': 2078833,
'StorageClass': 'STANDARD'},
{'Key': 'Alicia_Rand_Bodoia_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 38, tzinfo=tzutc()),
'ETag': '"63bcb0e7b76abd261218e6a5ddfe50a8"',
'Size': 33275,
'StorageClass': 'STANDARD'},
{'Key': 'Allen_Gail_Smith.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 36, tzinfo=tzutc()),
'ETag': '"481c84d197f892e9b14766bc5bcac23f"',
'Size': 2621834,
'StorageClass': 'STANDARD'},
{'Key': 'Allen_Gail_Smith_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 39, tzinfo=tzutc()),
'ETag': '"b055611d3bbb036baaec9d6fcefd7a9c"',
'Size': 97471,
'StorageClass': 'STANDARD'},
{'Key': 'Amanda_Renner_Gild.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 56, tzinfo=tzutc()),
'ETag': '"b1b2cf99e8d80f401446f676bfe1dc26"',
'Size': 2109200,
'StorageClass': 'STANDARD'},
{'Key': 'Amanda_Renner_Gild_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 31, tzinfo=tzutc()),
'ETag': '"2e5ee447297f65b7e9bca5833575e6ce"',
'Size': 121943,
'StorageClass': 'STANDARD'},
{'Key': 'Andrea_Chen.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 34, tzinfo=tzutc()),
'ETag': '"83139693ce3e173901f61d6f80dc2f91"',
'Size': 1794921,
'StorageClass': 'STANDARD'},
{'Key': 'Andrea_Chen_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 41, tzinfo=tzutc()),
'ETag': '"73d83590503603ccdeaf2ed0fefc2eb4"',
'Size': 90690,
'StorageClass': 'STANDARD'},
{'Key': 'Andrew_Dubois.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 51, tzinfo=tzutc()),
'ETag': '"a215a9bee6a693b3bd4bf3f901154055"',
'Size': 1995403,
'StorageClass': 'STANDARD'},
{'Key': 'Andrew_Dubois_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 21, tzinfo=tzutc()),
'ETag': '"1f17a8e2aa34e3a4f5d6f7a2325ef0ed"',
'Size': 95651,
'StorageClass': 'STANDARD'},
{'Key': 'Andrew_Lloyd_Loftis.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 55, tzinfo=tzutc()),
'ETag': '"1f2b5bbb3a145bbf831b2c587a391a85"',
'Size': 2327090,
'StorageClass': 'STANDARD'},
{'Key': 'Andrew_Lloyd_Loftis_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 46, tzinfo=tzutc()),
'ETag': '"9204ceba5bed9f46445aa2102ed9c4f3"',
'Size': 103135,
'StorageClass': 'STANDARD'},
{'Key': 'Angela_Waszkiewicz.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 46, tzinfo=tzutc()),
'ETag': '"0a285c8be855508c3376868d119458fe"',
'Size': 2217862,
'StorageClass': 'STANDARD'},
{'Key': 'Angela_Waszkiewicz_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 44, tzinfo=tzutc()),
'ETag': '"c5114cda1bf374feb2534c28a0ac747c"',
'Size': 59368,
'StorageClass': 'STANDARD'},
{'Key': 'Anne_M_Perry.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 53, tzinfo=tzutc()),
'ETag': '"ebeec734b2242d027c8cd031708cf45e"',
'Size': 2122098,
'StorageClass': 'STANDARD'},
{'Key': 'Anne_M_Perry_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 12, tzinfo=tzutc()),
'ETag': '"bb674475ad7c933677374651560dc177"',
'Size': 108608,
'StorageClass': 'STANDARD'},
{'Key': 'Anoush_U_Shah.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 48, tzinfo=tzutc()),
'ETag': '"a0d9cc6834a00d7f3df0833ea07abb08"',
'Size': 2346068,
'StorageClass': 'STANDARD'},
{'Key': 'Anoush_U_Shah_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 17, tzinfo=tzutc()),
'ETag': '"73f84b2a591ae329fdceef05f6e47f3a"',
'Size': 89691,
'StorageClass': 'STANDARD'},
{'Key': 'Anthony_X_Ayala.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 25, tzinfo=tzutc()),
'ETag': '"993f21440b6bb374206467affda2614c"',
'Size': 2014408,
'StorageClass': 'STANDARD'},
{'Key': 'Anthony_X_Ayala_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 16, tzinfo=tzutc()),
'ETag': '"daf2945b30aa7a75b695675ff5d4b330"',
'Size': 99698,
'StorageClass': 'STANDARD'},
{'Key': 'Benjamin_Pyung-Hwa_Aikens.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 46, tzinfo=tzutc()),
'ETag': '"36aac913003b156450de1247bef0a25b"',
'Size': 2163285,
'StorageClass': 'STANDARD'},
{'Key': 'Benjamin_Pyung-Hwa_Aikens_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 23, tzinfo=tzutc()),
'ETag': '"b244ec07c68819abc4e6daa00dbf35e7"',
'Size': 86877,
'StorageClass': 'STANDARD'},
{'Key': 'Bingnan_Lei.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 3, tzinfo=tzutc()),
'ETag': '"ffed522ee0e41a455a0dd62c61c4e630"',
'Size': 2074414,
'StorageClass': 'STANDARD'},
{'Key': 'Bingnan_Lei_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 41, tzinfo=tzutc()),
'ETag': '"86a21a12d08f4d2f401eb0bbfd920134"',
'Size': 103296,
'StorageClass': 'STANDARD'},
{'Key': 'Bingyu_Li.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 53, tzinfo=tzutc()),
'ETag': '"cfe49dd93ae4f4fff0ee406dc24576e1"',
'Size': 1953749,
'StorageClass': 'STANDARD'},
{'Key': 'Bingyu_Li_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 46, tzinfo=tzutc()),
'ETag': '"0e718a42457e69d94ae3e6392932aba3"',
'Size': 101607,
'StorageClass': 'STANDARD'},
{'Key': 'Bintong_Zhai.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 28, tzinfo=tzutc()),
'ETag': '"d8ea7c8ae4049e6e930ac780616899d5"',
'Size': 2732466,
'StorageClass': 'STANDARD'},
{'Key': 'Bintong_Zhai_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 28, tzinfo=tzutc()),
'ETag': '"6b6410cb06344f480e20f1450e29c05a"',
'Size': 100318,
'StorageClass': 'STANDARD'},
{'Key': 'Boyan_Wei.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 38, tzinfo=tzutc()),
'ETag': '"df5adfab4ee26d88de7751a641f80d57"',
'Size': 1894656,
'StorageClass': 'STANDARD'},
{'Key': 'Boyan_Wei_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 15, tzinfo=tzutc()),
'ETag': '"91cbd1874e8cf4e8baf53faa6befc6ff"',
'Size': 75510,
'StorageClass': 'STANDARD'},
{'Key': 'Boyu_Zheng.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 16, tzinfo=tzutc()),
'ETag': '"8639edc81362a02e138a6ff7cb91a3f0"',
'Size': 2090271,
'StorageClass': 'STANDARD'},
{'Key': 'Boyu_Zheng_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 32, tzinfo=tzutc()),
'ETag': '"56e1c6841a4dab33af67ad4cb0d3856f"',
'Size': 81976,
'StorageClass': 'STANDARD'},
{'Key': 'Bryce_Charles_Drynan.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 52, tzinfo=tzutc()),
'ETag': '"4fcc5661d760abdfbf6f3e2e165109c0"',
'Size': 2071622,
'StorageClass': 'STANDARD'},
{'Key': 'Bryce_Charles_Drynan_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"6ae1aa6f35351ed951234d0f10f5cdd6"',
'Size': 79770,
'StorageClass': 'STANDARD'},
{'Key': 'Chengzhan_Shen.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 34, tzinfo=tzutc()),
'ETag': '"9866796419f6f0ac0a3ede674560fb9d"',
'Size': 2589939,
'StorageClass': 'STANDARD'},
{'Key': 'Chengzhan_Shen_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 36, tzinfo=tzutc()),
'ETag': '"586e8d78380566ab52167bbc8d0458ad"',
'Size': 79782,
'StorageClass': 'STANDARD'},
{'Key': 'Cheuk_Yui_Marcus_Chan.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 6, tzinfo=tzutc()),
'ETag': '"a6e113514df5b1a2c59935ca0558c118"',
'Size': 2104699,
'StorageClass': 'STANDARD'},
{'Key': 'Cheuk_Yui_Marcus_Chan_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 9, tzinfo=tzutc()),
'ETag': '"9bdfcf6f14320f5ab01fcdc7111393b9"',
'Size': 83262,
'StorageClass': 'STANDARD'},
{'Key': 'Chioke_K_Bellamy.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 47, tzinfo=tzutc()),
'ETag': '"e94f63922c259b9fa00320ac73dfa7e9"',
'Size': 2459800,
'StorageClass': 'STANDARD'},
{'Key': 'Chioke_K_Bellamy_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 24, tzinfo=tzutc()),
'ETag': '"53eeeab4aeee769d69b8ac64a8ec2e43"',
'Size': 109203,
'StorageClass': 'STANDARD'},
{'Key': 'Christopher_Craig_Kenney.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 43, tzinfo=tzutc()),
'ETag': '"a358d0bc3d7ae414b168230a22698a84"',
'Size': 2320097,
'StorageClass': 'STANDARD'},
{'Key': 'Christopher_Craig_Kenney_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 29, tzinfo=tzutc()),
'ETag': '"b1965216659c1ef45295c09e0f075d97"',
'Size': 100177,
'StorageClass': 'STANDARD'},
{'Key': 'Christopher_David_Koontz.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 51, tzinfo=tzutc()),
'ETag': '"781e5050c43cfb7028d6eb7909599734"',
'Size': 2095533,
'StorageClass': 'STANDARD'},
{'Key': 'Christopher_David_Koontz_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 16, tzinfo=tzutc()),
'ETag': '"d6930e7a2db9291d394a269a41ef64a0"',
'Size': 94807,
'StorageClass': 'STANDARD'},
{'Key': 'Cole_Ritchey.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 2, tzinfo=tzutc()),
'ETag': '"e24181e1c9624404d23ec904517abcb6"',
'Size': 1997488,
'StorageClass': 'STANDARD'},
{'Key': 'Cole_Ritchey_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 39, tzinfo=tzutc()),
'ETag': '"a9ae9a75a93970d8d8f1870d6309118a"',
'Size': 91069,
'StorageClass': 'STANDARD'},
{'Key': 'Daniel_Madden_Sheedy.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 18, tzinfo=tzutc()),
'ETag': '"520f3e41513a91a6399b045847be36b9"',
'Size': 2275063,
'StorageClass': 'STANDARD'},
{'Key': 'Daniel_Madden_Sheedy_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 59, tzinfo=tzutc()),
'ETag': '"b619033abeae3c9dbd54aa1df95fa4b4"',
'Size': 83850,
'StorageClass': 'STANDARD'},
{'Key': 'Dillon_Hunter_Aryeh.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 23, tzinfo=tzutc()),
'ETag': '"f4b900155c01ffd45db85df13589c0ee"',
'Size': 1990026,
'StorageClass': 'STANDARD'},
{'Key': 'Dillon_Hunter_Aryeh_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 2, tzinfo=tzutc()),
'ETag': '"efdd466b9d26a70d123e590f12797f69"',
'Size': 94652,
'StorageClass': 'STANDARD'},
{'Key': 'Dongqiao_Tang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 21, tzinfo=tzutc()),
'ETag': '"53a1209a054945920739abe4fb582bb4"',
'Size': 1919195,
'StorageClass': 'STANDARD'},
{'Key': 'Dongqiao_Tang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 20, tzinfo=tzutc()),
'ETag': '"3ebae6142125686e90f1c9fb6dd2bc2d"',
'Size': 87011,
'StorageClass': 'STANDARD'},
{'Key': 'Edward_Cheongjoun_Hyun.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 41, tzinfo=tzutc()),
'ETag': '"ad9384fd0f5b204e4d915489edef98d9"',
'Size': 2144024,
'StorageClass': 'STANDARD'},
{'Key': 'Edward_Cheongjoun_Hyun_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 43, tzinfo=tzutc()),
'ETag': '"0efe9d169744a59235f19b11dfb78668"',
'Size': 80936,
'StorageClass': 'STANDARD'},
{'Key': 'Elizabeth_G_Higgins.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 9, tzinfo=tzutc()),
'ETag': '"7ea186255da7f712335d4f61f9ca1cd2"',
'Size': 2260307,
'StorageClass': 'STANDARD'},
{'Key': 'Elizabeth_G_Higgins_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 41, tzinfo=tzutc()),
'ETag': '"d07fb40dfec1dd3df005aa7e36557ce6"',
'Size': 110350,
'StorageClass': 'STANDARD'},
{'Key': 'Emmanuel_Thomas_George_Skora.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 52, tzinfo=tzutc()),
'ETag': '"d585658d02aef6f0568257615e6d481c"',
'Size': 1922738,
'StorageClass': 'STANDARD'},
{'Key': 'Emmanuel_Thomas_George_Skora_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 58, tzinfo=tzutc()),
'ETag': '"81781ea661d119f6c5738307148fa7af"',
'Size': 89399,
'StorageClass': 'STANDARD'},
{'Key': 'Eric_Mayo.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 25, tzinfo=tzutc()),
'ETag': '"7a69a2ddac0a4e9bf368be1f34d4595e"',
'Size': 2322066,
'StorageClass': 'STANDARD'},
{'Key': 'Eric_Mayo_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 16, tzinfo=tzutc()),
'ETag': '"21b08f71025729a1283ac676cb470006"',
'Size': 100331,
'StorageClass': 'STANDARD'},
{'Key': 'Estefani_Santiago_Gatica.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 37, tzinfo=tzutc()),
'ETag': '"34a665f5bc7fd55de5892cc58b4fe0ae"',
'Size': 2147703,
'StorageClass': 'STANDARD'},
{'Key': 'Estefani_Santiago_Gatica_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 42, tzinfo=tzutc()),
'ETag': '"6319c1e3e9bed88de4b4c154f6d00eb4"',
'Size': 107431,
'StorageClass': 'STANDARD'},
{'Key': 'Evan_Anderson_Gilbert.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 8, tzinfo=tzutc()),
'ETag': '"817c11ded2e546badef9b678da190ba4"',
'Size': 2110633,
'StorageClass': 'STANDARD'},
{'Key': 'Evan_Anderson_Gilbert_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 10, tzinfo=tzutc()),
'ETag': '"9f1519c775e56c328d3d28f3be66680e"',
'Size': 102209,
'StorageClass': 'STANDARD'},
{'Key': 'Garhett_William_Sessions.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 59, tzinfo=tzutc()),
'ETag': '"64aedf74564ea1e6908c11cc49753c4b"',
'Size': 1900072,
'StorageClass': 'STANDARD'},
{'Key': 'Garhett_William_Sessions_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"6ac6c22e46a72b581363ff9c50d94df5"',
'Size': 90773,
'StorageClass': 'STANDARD'},
{'Key': 'George_Basil_Economus.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 31, tzinfo=tzutc()),
'ETag': '"1b5613cbdd5c30b256f00bacf91a93c6"',
'Size': 2273260,
'StorageClass': 'STANDARD'},
{'Key': 'George_Basil_Economus_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 13, tzinfo=tzutc()),
'ETag': '"f9bce71201fddfdfbd45f66f4c236195"',
'Size': 89989,
'StorageClass': 'STANDARD'},
{'Key': 'Guangxin_Bao.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 19, tzinfo=tzutc()),
'ETag': '"79ce7c57183b34d965b0bda730003585"',
'Size': 1870393,
'StorageClass': 'STANDARD'},
{'Key': 'Guangxin_Bao_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 47, tzinfo=tzutc()),
'ETag': '"18945b565f6c1c3817fb29a12abcb699"',
'Size': 90786,
'StorageClass': 'STANDARD'},
{'Key': 'Hangfei_Lyu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, tzinfo=tzutc()),
'ETag': '"05c4ba2163201cfa11f2a2010acfc4b8"',
'Size': 2312203,
'StorageClass': 'STANDARD'},
{'Key': 'Hangfei_Lyu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 44, tzinfo=tzutc()),
'ETag': '"636c81e5e4db7bea651b408f6c26a246"',
'Size': 96882,
'StorageClass': 'STANDARD'},
{'Key': 'Hanshuai_Shi.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 42, tzinfo=tzutc()),
'ETag': '"0ed10ac9c2cb7500bba0ca39c8436f9a"',
'Size': 1978488,
'StorageClass': 'STANDARD'},
{'Key': 'Hanshuai_Shi_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 17, tzinfo=tzutc()),
'ETag': '"4c5dd907c71c766e99a5a5004b0a5939"',
'Size': 94174,
'StorageClass': 'STANDARD'},
{'Key': 'Haopeng_Liu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 26, tzinfo=tzutc()),
'ETag': '"90d02eb05b0bcf8b43efdf22fce6e651"',
'Size': 2146341,
'StorageClass': 'STANDARD'},
{'Key': 'Haopeng_Liu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 29, tzinfo=tzutc()),
'ETag': '"9846b557c03294ae66f6991249cccdd4"',
'Size': 98711,
'StorageClass': 'STANDARD'},
{'Key': 'Harve_E_Criqui.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 11, tzinfo=tzutc()),
'ETag': '"00fa522cb265e41e19f07015c0f1d9c4"',
'Size': 2453932,
'StorageClass': 'STANDARD'},
{'Key': 'Harve_E_Criqui_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 25, tzinfo=tzutc()),
'ETag': '"794d314819228ab559d8d197333e319a"',
'Size': 92820,
'StorageClass': 'STANDARD'},
{'Key': 'Helen_Kidane_Haile.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 9, tzinfo=tzutc()),
'ETag': '"1c92e3003dd9bc138031bd8ebfaa3971"',
'Size': 2536616,
'StorageClass': 'STANDARD'},
{'Key': 'Helen_Kidane_Haile_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 23, tzinfo=tzutc()),
'ETag': '"eb65267dcf25705cfd8c8f6d19c582c5"',
'Size': 122194,
'StorageClass': 'STANDARD'},
{'Key': 'Hewei_Shen.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 50, tzinfo=tzutc()),
'ETag': '"434a1511544f6e60b84e0d3eb72461f6"',
'Size': 1933256,
'StorageClass': 'STANDARD'},
{'Key': 'Hewei_Shen_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 20, tzinfo=tzutc()),
'ETag': '"ba7a7b46f73ecdfb6caa50d8dc3a9b25"',
'Size': 77889,
'StorageClass': 'STANDARD'},
{'Key': 'Jackson_R_Harper.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 1, tzinfo=tzutc()),
'ETag': '"62d623c97ec57ea73a778df4574a4ff0"',
'Size': 2349818,
'StorageClass': 'STANDARD'},
{'Key': 'Jackson_R_Harper_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 21, tzinfo=tzutc()),
'ETag': '"40d902e0230fb0ea048658f078291935"',
'Size': 98893,
'StorageClass': 'STANDARD'},
{'Key': 'Jacob_Philip_Rockaway.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 50, tzinfo=tzutc()),
'ETag': '"c7b300548baee6a8e7d04b8a6fc66fb2"',
'Size': 1909265,
'StorageClass': 'STANDARD'},
{'Key': 'Jacob_Philip_Rockaway_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 53, tzinfo=tzutc()),
'ETag': '"6c49f1fe532091a2e96695112d69f7f7"',
'Size': 88661,
'StorageClass': 'STANDARD'},
{'Key': 'Jash_Sanjaybhai_Vachhani.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 12, tzinfo=tzutc()),
'ETag': '"45b996addded1be0a51ceac354c03356"',
'Size': 2147007,
'StorageClass': 'STANDARD'},
{'Key': 'Jash_Sanjaybhai_Vachhani_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 41, tzinfo=tzutc()),
'ETag': '"a8c24cc623e3aeca8f5bf9cec237c29a"',
'Size': 31224,
'StorageClass': 'STANDARD'},
{'Key': 'Jax_Francis_Revfi.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 13, tzinfo=tzutc()),
'ETag': '"14dd3e31139dfe67efba2d30f306d32e"',
'Size': 2512677,
'StorageClass': 'STANDARD'},
{'Key': 'Jax_Francis_Revfi_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 13, tzinfo=tzutc()),
'ETag': '"47870776b4da7e660e9b0e9a75fb7022"',
'Size': 106877,
'StorageClass': 'STANDARD'},
{'Key': 'Jennifer_Ontiveros-Olivas.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 27, tzinfo=tzutc()),
'ETag': '"f1e43db95b2ee66c43c442870222a352"',
'Size': 2229143,
'StorageClass': 'STANDARD'},
{'Key': 'Jennifer_Ontiveros-Olivas_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 47, tzinfo=tzutc()),
'ETag': '"76f1668b086bd16567f29b3496286c96"',
'Size': 115337,
'StorageClass': 'STANDARD'},
{'Key': 'Jeremy_Brian_Nurding.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 53, tzinfo=tzutc()),
'ETag': '"5259b2b6ecd3580b17e834fb343dec88"',
'Size': 1823058,
'StorageClass': 'STANDARD'},
{'Key': 'Jeremy_Brian_Nurding_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 39, tzinfo=tzutc()),
'ETag': '"d28dae5ce7cc4f0a0bbfd0c179f24502"',
'Size': 87847,
'StorageClass': 'STANDARD'},
{'Key': 'Jiacheng_Wang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 33, tzinfo=tzutc()),
'ETag': '"0b9613ccd8ac6273695ab5797b918b93"',
'Size': 2154466,
'StorageClass': 'STANDARD'},
{'Key': 'Jiacheng_Wang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 39, tzinfo=tzutc()),
'ETag': '"3bbbdc8dd41567f92b92fe7865b2548f"',
'Size': 80561,
'StorageClass': 'STANDARD'},
{'Key': 'Jiahao_Ma.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 58, tzinfo=tzutc()),
'ETag': '"5da7c2462e6f4bde8ac0a1ca54cdc1bd"',
'Size': 1895334,
'StorageClass': 'STANDARD'},
{'Key': 'Jiahao_Ma_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 52, tzinfo=tzutc()),
'ETag': '"a53d3ff94369623e28d7cdccc5fa2182"',
'Size': 93128,
'StorageClass': 'STANDARD'},
{'Key': 'Jiahua_Wu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 48, tzinfo=tzutc()),
'ETag': '"10722fa79691a85ec20f46eb45741514"',
'Size': 1982281,
'StorageClass': 'STANDARD'},
{'Key': 'Jiahua_Wu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 39, tzinfo=tzutc()),
'ETag': '"bb05058a630a5b9a184489aca6703678"',
'Size': 93065,
'StorageClass': 'STANDARD'},
{'Key': 'Jiaming_Zhang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 43, tzinfo=tzutc()),
'ETag': '"f60a33d513fd2d300e21ef15aede3ca0"',
'Size': 1852379,
'StorageClass': 'STANDARD'},
{'Key': 'Jiaming_Zhang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 48, tzinfo=tzutc()),
'ETag': '"7b1f49e641057f12fa0f8b7c4c01d02d"',
'Size': 96854,
'StorageClass': 'STANDARD'},
{'Key': 'Jodie_Elizabeth_Brine.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 54, tzinfo=tzutc()),
'ETag': '"d3028ad48d751cc62cfab2834ef844c9"',
'Size': 2383791,
'StorageClass': 'STANDARD'},
{'Key': 'Jodie_Elizabeth_Brine_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 16, tzinfo=tzutc()),
'ETag': '"b7019ec5773c4230b28b2406da055dfb"',
'Size': 97653,
'StorageClass': 'STANDARD'},
{'Key': 'John_William_Null.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 32, tzinfo=tzutc()),
'ETag': '"e1161046351c262a49d9764f6ad49da3"',
'Size': 1915436,
'StorageClass': 'STANDARD'},
{'Key': 'John_William_Null_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 53, tzinfo=tzutc()),
'ETag': '"9bf694f43ba7397d2a48a8dd04f349d1"',
'Size': 96005,
'StorageClass': 'STANDARD'},
{'Key': 'Joseph_Macon_Barker.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 33, tzinfo=tzutc()),
'ETag': '"d931accf84535c885af46cd5ae6c7832"',
'Size': 2179230,
'StorageClass': 'STANDARD'},
{'Key': 'Joseph_Macon_Barker_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 51, tzinfo=tzutc()),
'ETag': '"2c76abf31c7c47fce7bdd04d0813afa7"',
'Size': 104596,
'StorageClass': 'STANDARD'},
{'Key': 'Joseph_Miller_Hirsch.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 50, tzinfo=tzutc()),
'ETag': '"ebae9c1ff67de78ffe9ee39179e14d6b"',
'Size': 2118413,
'StorageClass': 'STANDARD'},
{'Key': 'Joseph_Miller_Hirsch_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 48, tzinfo=tzutc()),
'ETag': '"d92ace7c24cd05102e56eb5ea6ebae0f"',
'Size': 91270,
'StorageClass': 'STANDARD'},
{'Key': 'Kaamil_Farooqi.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 57, tzinfo=tzutc()),
'ETag': '"5d8173a42e5443ac6f2aac8a8af96973"',
'Size': 2173410,
'StorageClass': 'STANDARD'},
{'Key': 'Kaamil_Farooqi_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 29, tzinfo=tzutc()),
'ETag': '"30227e0f61cb754cea96bb3a4b3b6cbb"',
'Size': 96246,
'StorageClass': 'STANDARD'},
{'Key': 'Kaitlyn_R_Vickers.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 15, tzinfo=tzutc()),
'ETag': '"58eed863451740529b7cecf9c3064ec9"',
'Size': 1994937,
'StorageClass': 'STANDARD'},
{'Key': 'Kaitlyn_R_Vickers_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 34, tzinfo=tzutc()),
'ETag': '"ca146423fdf177106c0262ba66a4c281"',
'Size': 112294,
'StorageClass': 'STANDARD'},
{'Key': 'Kaushik_Rajaram.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 47, tzinfo=tzutc()),
'ETag': '"8b76441c8c3f9729c9242bc364264120"',
'Size': 2471873,
'StorageClass': 'STANDARD'},
{'Key': 'Kaushik_Rajaram_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"da5db571388e2c6139252d4198ef5170"',
'Size': 104008,
'StorageClass': 'STANDARD'},
{'Key': 'Kayla_Marie_Williams.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 22, tzinfo=tzutc()),
'ETag': '"379ff6604031d3c04a0075f7f0f810c1"',
'Size': 2037868,
'StorageClass': 'STANDARD'},
{'Key': 'Kayla_Marie_Williams_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"8becc74f05efd5bbd58061b976fa8cb7"',
'Size': 91197,
'StorageClass': 'STANDARD'},
{'Key': 'Kendall_Ashley_Hilson.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 1, tzinfo=tzutc()),
'ETag': '"587f9500ea1133f3ed8783fdf93347bc"',
'Size': 2346204,
'StorageClass': 'STANDARD'},
{'Key': 'Kendall_Ashley_Hilson_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"147fb1df182f4594a106658ab267544b"',
'Size': 97196,
'StorageClass': 'STANDARD'},
{'Key': 'Khushi_Arya.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 51, tzinfo=tzutc()),
'ETag': '"daa6a8bf62b3662b5de7dac6badd1f70"',
'Size': 2249627,
'StorageClass': 'STANDARD'},
{'Key': 'Khushi_Arya_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 12, tzinfo=tzutc()),
'ETag': '"d5f8bae59a9ea279b4212b39a378dcc0"',
'Size': 112528,
'StorageClass': 'STANDARD'},
{'Key': 'Kyle_John_Wiblishauser.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 35, tzinfo=tzutc()),
'ETag': '"695ffbffa6ac30c12950b6ad2e15d64d"',
'Size': 1933698,
'StorageClass': 'STANDARD'},
{'Key': 'Kyle_John_Wiblishauser_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 17, tzinfo=tzutc()),
'ETag': '"4e7b19fe6c0d47bfaae29876722e4897"',
'Size': 83392,
'StorageClass': 'STANDARD'},
{'Key': 'Latham_Alexander_Weaver.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 49, tzinfo=tzutc()),
'ETag': '"3a7875e28d06a699fb008106d52414ed"',
'Size': 1982180,
'StorageClass': 'STANDARD'},
{'Key': 'Latham_Alexander_Weaver_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"d4a34b90df8887607dd736da44a69463"',
'Size': 41087,
'StorageClass': 'STANDARD'},
{'Key': 'Lauren_Elizabeth_Johnson.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 35, tzinfo=tzutc()),
'ETag': '"f6bde6f3d1ace995271dc62cc8744da3"',
'Size': 2238879,
'StorageClass': 'STANDARD'},
{'Key': 'Lauren_Elizabeth_Johnson_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 45, tzinfo=tzutc()),
'ETag': '"636f34d5a9dbcfa8229169d649ff11be"',
'Size': 115991,
'StorageClass': 'STANDARD'},
{'Key': 'Logan_Trujillo.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 37, tzinfo=tzutc()),
'ETag': '"808b4b1fe5d19c4ec6e0f1590c22d7eb"',
'Size': 2176007,
'StorageClass': 'STANDARD'},
{'Key': 'Logan_Trujillo_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 28, tzinfo=tzutc()),
'ETag': '"2910f2b82ebb1738f0ba6ddb6cb7da73"',
'Size': 103011,
'StorageClass': 'STANDARD'},
{'Key': 'Lu_Xing.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 18, tzinfo=tzutc()),
'ETag': '"f1097d62dcdaee9017b84ee4014f87a7"',
'Size': 2192892,
'StorageClass': 'STANDARD'},
{'Key': 'Lu_Xing_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 59, tzinfo=tzutc()),
'ETag': '"b372cfc1db6bc191c337e74e8aea3045"',
'Size': 128952,
'StorageClass': 'STANDARD'},
{'Key': 'Luying_Huang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 27, tzinfo=tzutc()),
'ETag': '"ee323e276b87fa4823443ce1b1b8c9ab"',
'Size': 1914343,
'StorageClass': 'STANDARD'},
{'Key': 'Luying_Huang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 15, tzinfo=tzutc()),
'ETag': '"d0f2cadf3b24ac97d94966a77ae986e4"',
'Size': 101146,
'StorageClass': 'STANDARD'},
{'Key': 'Manling_Shi.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 30, tzinfo=tzutc()),
'ETag': '"8180e668eb429d48710d30999f8a900b"',
'Size': 2146179,
'StorageClass': 'STANDARD'},
{'Key': 'Manling_Shi_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 23, tzinfo=tzutc()),
'ETag': '"bcbc744315dc47677b3bc0727c8cc242"',
'Size': 82093,
'StorageClass': 'STANDARD'},
{'Key': 'Marcus_Cole_cooper.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 24, tzinfo=tzutc()),
'ETag': '"51e2bcaf97434bd2a980ed04edd08728"',
'Size': 2041625,
'StorageClass': 'STANDARD'},
{'Key': 'Marcus_Cole_cooper_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"c8e99bb3bff4a27150e0cd8a230bb367"',
'Size': 93555,
'StorageClass': 'STANDARD'},
{'Key': 'Mary_Martha_Milcoff.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 45, tzinfo=tzutc()),
'ETag': '"0761f5641359608b95143c5af0e277be"',
'Size': 2256916,
'StorageClass': 'STANDARD'},
{'Key': 'Mary_Martha_Milcoff_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 16, tzinfo=tzutc()),
'ETag': '"48a392be75fc02ebe26e17029769d8ba"',
'Size': 129988,
'StorageClass': 'STANDARD'},
{'Key': 'Mary_Michele_Troise.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 40, tzinfo=tzutc()),
'ETag': '"a273e3bbab58cada1574057978a643d4"',
'Size': 2542718,
'StorageClass': 'STANDARD'},
{'Key': 'Mary_Michele_Troise_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 13, tzinfo=tzutc()),
'ETag': '"f9a3a45b50997ad7dae7b7e61a722fc1"',
'Size': 101965,
'StorageClass': 'STANDARD'},
{'Key': 'Max_Koontz.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 6, tzinfo=tzutc()),
'ETag': '"fe1f775db517d45fd15ddf8155a047e8"',
'Size': 2053554,
'StorageClass': 'STANDARD'},
{'Key': 'Max_Koontz_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 26, tzinfo=tzutc()),
'ETag': '"02a19cd2bb11005901ec17aabc3a27e2"',
'Size': 94328,
'StorageClass': 'STANDARD'},
{'Key': 'Meghan_O_Malley.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 24, tzinfo=tzutc()),
'ETag': '"b4d15a333a2d71d3b568fdab76751517"',
'Size': 2113224,
'StorageClass': 'STANDARD'},
{'Key': 'Meghan_O_Malley_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 16, tzinfo=tzutc()),
'ETag': '"7ca3b02a3c135bd32c36e1d001289542"',
'Size': 98107,
'StorageClass': 'STANDARD'},
{'Key': 'Mengyao_Liu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 23, tzinfo=tzutc()),
'ETag': '"1db6aebb734c2429b72eb972042bb19a"',
'Size': 2326630,
'StorageClass': 'STANDARD'},
{'Key': 'Mengyao_Liu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 15, tzinfo=tzutc()),
'ETag': '"791ef35a77aaa1ae3f07f8a374510826"',
'Size': 117891,
'StorageClass': 'STANDARD'},
{'Key': 'Meryl_Criswell_Kaduboski.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 55, tzinfo=tzutc()),
'ETag': '"061af157306799e80d40e81f2062ce31"',
'Size': 2168021,
'StorageClass': 'STANDARD'},
{'Key': 'Meryl_Criswell_Kaduboski_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 24, tzinfo=tzutc()),
'ETag': '"3a8755fd069085dd0319333f196839f9"',
'Size': 122297,
'StorageClass': 'STANDARD'},
{'Key': 'Michael_Jason_Vejsiri.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 3, tzinfo=tzutc()),
'ETag': '"1338b30d7c9e78342c5d92d34d9a6026"',
'Size': 2183047,
'StorageClass': 'STANDARD'},
{'Key': 'Michael_Jason_Vejsiri_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 57, tzinfo=tzutc()),
'ETag': '"b57c70624980c1be67720193ca4caa33"',
'Size': 104318,
'StorageClass': 'STANDARD'},
{'Key': 'Michelle_Monica_Saikali.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 32, tzinfo=tzutc()),
'ETag': '"92de7bcc364587d5c7fbfb0b44043163"',
'Size': 1978447,
'StorageClass': 'STANDARD'},
{'Key': 'Michelle_Monica_Saikali_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 17, tzinfo=tzutc()),
'ETag': '"8588c330b2d084a7b018361280ccf338"',
'Size': 103277,
'StorageClass': 'STANDARD'},
{'Key': 'Millie_C_Garrett.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 33, tzinfo=tzutc()),
'ETag': '"f72b3e236cd5672c1945c8fe0fac532f"',
'Size': 2116862,
'StorageClass': 'STANDARD'},
{'Key': 'Millie_C_Garrett_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 43, tzinfo=tzutc()),
'ETag': '"ff68b94ecd2b5fc270d9461efc7ebb25"',
'Size': 96974,
'StorageClass': 'STANDARD'},
{'Key': 'Natalie_Weiner.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 12, tzinfo=tzutc()),
'ETag': '"28c8ab2edeb3535ab09b5c9b7219b314"',
'Size': 1921665,
'StorageClass': 'STANDARD'},
{'Key': 'Natalie_Weiner_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 41, tzinfo=tzutc()),
'ETag': '"340fd50217af890568ed312303f9fcb3"',
'Size': 86524,
'StorageClass': 'STANDARD'},
{'Key': 'Nathalie_Lisa_Friedman.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 26, tzinfo=tzutc()),
'ETag': '"0073128deca023a4ba68b6f20fe46727"',
'Size': 2618204,
'StorageClass': 'STANDARD'},
{'Key': 'Nathalie_Lisa_Friedman_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 48, tzinfo=tzutc()),
'ETag': '"e75ac7957d77aa874280608dcbfaa92e"',
'Size': 99079,
'StorageClass': 'STANDARD'},
{'Key': 'Nathanael_Hunter_Kraus.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 22, tzinfo=tzutc()),
'ETag': '"8a14091cd9bd1922b6734118994c4226"',
'Size': 2013795,
'StorageClass': 'STANDARD'},
{'Key': 'Nathanael_Hunter_Kraus_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 2, tzinfo=tzutc()),
'ETag': '"13c208fd6cd172d18a9d7b5bd385a45b"',
'Size': 83053,
'StorageClass': 'STANDARD'},
{'Key': 'Nicholas_J_Sundberg.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 31, tzinfo=tzutc()),
'ETag': '"63558f72e9f5f156afccaf4e12f38c1a"',
'Size': 2175252,
'StorageClass': 'STANDARD'},
{'Key': 'Nicholas_J_Sundberg_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 28, tzinfo=tzutc()),
'ETag': '"da527038592037b40fa2e602c1348b59"',
'Size': 101370,
'StorageClass': 'STANDARD'},
{'Key': 'Nicolson_Charles_Panos.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 42, tzinfo=tzutc()),
'ETag': '"cc2b7c747c204b8f55ccaba4388ebe9d"',
'Size': 2035477,
'StorageClass': 'STANDARD'},
{'Key': 'Nicolson_Charles_Panos_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"91c872daea1c6b0ce90c1bd2e104cbab"',
'Size': 103221,
'StorageClass': 'STANDARD'},
{'Key': 'Niklas_Jozef_Baldis.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 59, tzinfo=tzutc()),
'ETag': '"18ce28f60649b17f2bd1ed908ab7550b"',
'Size': 2547913,
'StorageClass': 'STANDARD'},
{'Key': 'Niklas_Jozef_Baldis_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 42, tzinfo=tzutc()),
'ETag': '"9660b5c8241c510dc404dea476514dc1"',
'Size': 88506,
'StorageClass': 'STANDARD'},
{'Key': 'Patrick_Ryan_Weimaker.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 28, tzinfo=tzutc()),
'ETag': '"637b81655a00618d029332ec0bc7d641"',
'Size': 2047100,
'StorageClass': 'STANDARD'},
{'Key': 'Patrick_Ryan_Weimaker_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 57, tzinfo=tzutc()),
'ETag': '"eea0a8804421ea38d89358a7d09071c3"',
'Size': 106319,
'StorageClass': 'STANDARD'},
{'Key': 'Qian_Chen.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 39, tzinfo=tzutc()),
'ETag': '"ecfab4853805e2cbec7f26f009531a85"',
'Size': 2083844,
'StorageClass': 'STANDARD'},
{'Key': 'Qian_Chen_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 55, tzinfo=tzutc()),
'ETag': '"e79c5793505869483590530537487246"',
'Size': 108056,
'StorageClass': 'STANDARD'},
{'Key': 'Qin_Miao.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 8, tzinfo=tzutc()),
'ETag': '"df6c4425d0af13fa09cbb6da0ed2469a"',
'Size': 2726555,
'StorageClass': 'STANDARD'},
{'Key': 'Qin_Miao_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 42, tzinfo=tzutc()),
'ETag': '"e46175a8f5c3bc26202bd93ebd5b12c3"',
'Size': 89198,
'StorageClass': 'STANDARD'},
{'Key': 'Quinn_Poole.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 17, tzinfo=tzutc()),
'ETag': '"57cbf1531905b68d9b7da40ab0e38a94"',
'Size': 2275807,
'StorageClass': 'STANDARD'},
{'Key': 'Quinn_Poole_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 28, tzinfo=tzutc()),
'ETag': '"ea3a9dbc66e8bc14980ee93d4b08ae30"',
'Size': 30110,
'StorageClass': 'STANDARD'},
{'Key': 'Raleigh_Coolidge_Conway.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 53, tzinfo=tzutc()),
'ETag': '"7cbdc3cbe91deb2c60f08620e8316bc0"',
'Size': 2017561,
'StorageClass': 'STANDARD'},
{'Key': 'Raleigh_Coolidge_Conway_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 20, tzinfo=tzutc()),
'ETag': '"0a7a7ce0c886ba4de2e7b9944568f458"',
'Size': 92827,
'StorageClass': 'STANDARD'},
{'Key': 'Reid_Powers_Walker.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 37, tzinfo=tzutc()),
'ETag': '"bf4857c9cfd7d276251e584343424933"',
'Size': 2311219,
'StorageClass': 'STANDARD'},
{'Key': 'Reid_Powers_Walker_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"3bde6881761f0e7db14f74c78206241e"',
'Size': 98345,
'StorageClass': 'STANDARD'},
{'Key': 'Ruochen_Bao.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 56, tzinfo=tzutc()),
'ETag': '"f80a408a77b50f7f57e06b53291563cf"',
'Size': 2278222,
'StorageClass': 'STANDARD'},
{'Key': 'Ruochen_Bao_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 33, tzinfo=tzutc()),
'ETag': '"282a5dbc8f23ae6378fbf1ecc5f86315"',
'Size': 55966,
'StorageClass': 'STANDARD'},
{'Key': 'Ryan_Marek_Smith.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 21, tzinfo=tzutc()),
'ETag': '"515b05f928135c445b1e09e95a6dcc41"',
'Size': 2304383,
'StorageClass': 'STANDARD'},
{'Key': 'Ryan_Marek_Smith_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"5ad8db3f5750151889d65593eb117d23"',
'Size': 74780,
'StorageClass': 'STANDARD'},
{'Key': 'Samantha_O_Brien.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 14, tzinfo=tzutc()),
'ETag': '"b85ceb98cb3d20130c0e383c330a51eb"',
'Size': 2556396,
'StorageClass': 'STANDARD'},
{'Key': 'Samantha_O_Brien_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 23, tzinfo=tzutc()),
'ETag': '"be03f5ed9be4dedc426db32037a91cd8"',
'Size': 113316,
'StorageClass': 'STANDARD'},
{'Key': 'Savannah_Kayla_Littlejohn.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 28, tzinfo=tzutc()),
'ETag': '"38bfbea163ed5e3d4f49b2fdaac25458"',
'Size': 2259281,
'StorageClass': 'STANDARD'},
{'Key': 'Savannah_Kayla_Littlejohn_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 41, tzinfo=tzutc()),
'ETag': '"078cc12f084ff7af4124c9a3b9dc70fd"',
'Size': 128226,
'StorageClass': 'STANDARD'},
{'Key': 'Sebastian_Andres_Lopez-Ibanez.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 10, tzinfo=tzutc()),
'ETag': '"ed002fd0d4f09754db14d6959d963608"',
'Size': 2726675,
'StorageClass': 'STANDARD'},
{'Key': 'Sebastian_Andres_Lopez-Ibanez_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 51, tzinfo=tzutc()),
'ETag': '"a886c5d5b9b9d9a1e2a190d25ffa5daf"',
'Size': 86094,
'StorageClass': 'STANDARD'},
{'Key': 'Shanay_Nimish_Sonawala.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 26, tzinfo=tzutc()),
'ETag': '"90eca5407ddd54b1cbcf43edae209728"',
'Size': 1895084,
'StorageClass': 'STANDARD'},
{'Key': 'Shanay_Nimish_Sonawala_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 13, tzinfo=tzutc()),
'ETag': '"0532bc175db3064b1662fe35f1f47d18"',
'Size': 33065,
'StorageClass': 'STANDARD'},
{'Key': 'Shenger_Zhou.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 48, tzinfo=tzutc()),
'ETag': '"29e91c5a8d7f302965159af69b7ae256"',
'Size': 2064475,
'StorageClass': 'STANDARD'},
{'Key': 'Shenger_Zhou_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 48, tzinfo=tzutc()),
'ETag': '"7accb6ee5140ce5169f5b2ba41f972b0"',
'Size': 82052,
'StorageClass': 'STANDARD'},
{'Key': 'Shenghao_Yang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 45, tzinfo=tzutc()),
'ETag': '"f471f5b41bc8fd1fffcd5a4e09aa2d2f"',
'Size': 2009683,
'StorageClass': 'STANDARD'},
{'Key': 'Shenghao_Yang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 16, tzinfo=tzutc()),
'ETag': '"4445c970fad3e9a810f1d294d7067775"',
'Size': 94113,
'StorageClass': 'STANDARD'},
{'Key': 'Shenzhe_Lian.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 44, tzinfo=tzutc()),
'ETag': '"763d9e62bd8b06662a2068213d7d8e19"',
'Size': 2280194,
'StorageClass': 'STANDARD'},
{'Key': 'Shenzhe_Lian_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 2, tzinfo=tzutc()),
'ETag': '"f3a5a1f57a189f65a8b55528c270121f"',
'Size': 81683,
'StorageClass': 'STANDARD'},
{'Key': 'Shuzhe_Wang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"f20d12ef64c131248b77a01f5edff3ab"',
'Size': 2205833,
'StorageClass': 'STANDARD'},
{'Key': 'Shuzhe_Wang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 9, tzinfo=tzutc()),
'ETag': '"5df4f5eb446171be59f503eba8a8651d"',
'Size': 115144,
'StorageClass': 'STANDARD'},
{'Key': 'Siyu_Lin.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 39, tzinfo=tzutc()),
'ETag': '"413566597c3b8d2b3c09969626ae0899"',
'Size': 1905892,
'StorageClass': 'STANDARD'},
{'Key': 'Siyu_Lin_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 25, tzinfo=tzutc()),
'ETag': '"5c69620183907f958fdff96f5d9ee105"',
'Size': 91787,
'StorageClass': 'STANDARD'},
{'Key': 'Skylour_Sebastian_Winakur.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 36, tzinfo=tzutc()),
'ETag': '"9a390b794e58a61233c1d31ab27183e7"',
'Size': 2041124,
'StorageClass': 'STANDARD'},
{'Key': 'Skylour_Sebastian_Winakur_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 52, tzinfo=tzutc()),
'ETag': '"790dc6a54f1b0a568125fbebfe91feb6"',
'Size': 110370,
'StorageClass': 'STANDARD'},
{'Key': 'Songlin_Liu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 31, tzinfo=tzutc()),
'ETag': '"1ec0fa5cf3fe7f4b99c1744d6d2c387b"',
'Size': 2030537,
'StorageClass': 'STANDARD'},
{'Key': 'Songlin_Liu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 58, tzinfo=tzutc()),
'ETag': '"2d6f15f14a5daca19526b94d3cfaa739"',
'Size': 85127,
'StorageClass': 'STANDARD'},
{'Key': 'Tianyi_Chen.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 20, tzinfo=tzutc()),
'ETag': '"f6a4fd41afe52fe8500c92aaf6c77ca7"',
'Size': 2040767,
'StorageClass': 'STANDARD'},
{'Key': 'Tianyi_Chen_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 47, tzinfo=tzutc()),
'ETag': '"84780989949bf6615487b2afbe591afe"',
'Size': 105064,
'StorageClass': 'STANDARD'},
{'Key': 'Tianyi_Yin.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 34, tzinfo=tzutc()),
'ETag': '"4dc2fc548ef01070a228b54e4a306214"',
'Size': 2438866,
'StorageClass': 'STANDARD'},
{'Key': 'Tianyi_Yin_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 2, tzinfo=tzutc()),
'ETag': '"6ee7b59a0ab0e2ee433405cc1c8a2159"',
'Size': 91817,
'StorageClass': 'STANDARD'},
{'Key': 'Tianyu_Cui.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 47, tzinfo=tzutc()),
'ETag': '"bc37dc239301ffc555799d361fe1de9f"',
'Size': 2111896,
'StorageClass': 'STANDARD'},
{'Key': 'Tianyu_Cui_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 43, tzinfo=tzutc()),
'ETag': '"761cb4d53114adcb54434fcf869499c0"',
'Size': 94324,
'StorageClass': 'STANDARD'},
{'Key': 'Trinity_Nicole_Elliott.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 24, tzinfo=tzutc()),
'ETag': '"5305c2f8c11b6479e711354826b0a142"',
'Size': 2165293,
'StorageClass': 'STANDARD'},
{'Key': 'Trinity_Nicole_Elliott_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 40, tzinfo=tzutc()),
'ETag': '"77afb17fa35f8e0c7549dcf006065882"',
'Size': 97243,
'StorageClass': 'STANDARD'},
{'Key': 'Wei_Tan.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 21, tzinfo=tzutc()),
'ETag': '"143fdd163248fa04b49bf2a01546d31b"',
'Size': 2140248,
'StorageClass': 'STANDARD'},
{'Key': 'Wei_Tan_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 27, tzinfo=tzutc()),
'ETag': '"eeba7fcda3336da0d1ce827cdc13f134"',
'Size': 80922,
'StorageClass': 'STANDARD'},
{'Key': 'Wentong_Guo.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 19, tzinfo=tzutc()),
'ETag': '"d641dba21e6eb1d5118e991fac2f8859"',
'Size': 2264663,
'StorageClass': 'STANDARD'},
{'Key': 'Wentong_Guo_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 53, tzinfo=tzutc()),
'ETag': '"09feda0d61ab887a474a96122bea8d2c"',
'Size': 107661,
'StorageClass': 'STANDARD'},
{'Key': 'Whitney_Joyce_Isbell.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 30, tzinfo=tzutc()),
'ETag': '"06377ea11cbd763d56467df2e94a41d0"',
'Size': 2145070,
'StorageClass': 'STANDARD'},
{'Key': 'Whitney_Joyce_Isbell_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 43, tzinfo=tzutc()),
'ETag': '"ed2b404818db234a8e4820e5a6ed4730"',
'Size': 109780,
'StorageClass': 'STANDARD'},
{'Key': 'Xiaoya_Luo.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 5, tzinfo=tzutc()),
'ETag': '"a3faa269b8a17ec11e5d0503d6d4fbae"',
'Size': 2115832,
'StorageClass': 'STANDARD'},
{'Key': 'Xiaoya_Luo_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 48, tzinfo=tzutc()),
'ETag': '"7f1cfeeb86ef6e8d6ca6b3a728661f22"',
'Size': 95337,
'StorageClass': 'STANDARD'},
{'Key': 'Xiaoyang_Zheng.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 35, tzinfo=tzutc()),
'ETag': '"125cc8f97ad9cb845bb59c1928180cb5"',
'Size': 2151148,
'StorageClass': 'STANDARD'},
{'Key': 'Xiaoyang_Zheng_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 39, tzinfo=tzutc()),
'ETag': '"bcf2273d5e32b09a9243af8794a16df7"',
'Size': 93562,
'StorageClass': 'STANDARD'},
{'Key': 'Xiaoyu_Zong.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 29, tzinfo=tzutc()),
'ETag': '"ccf2990537bd72de705cbf841618eae1"',
'Size': 2147116,
'StorageClass': 'STANDARD'},
{'Key': 'Xiaoyu_Zong_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"4cc377ff6c6f882a43a23545c4f1c495"',
'Size': 90890,
'StorageClass': 'STANDARD'},
{'Key': 'Xingyu_Wan.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 38, tzinfo=tzutc()),
'ETag': '"0cee7c66248965744a60a16bf31d9574"',
'Size': 2065809,
'StorageClass': 'STANDARD'},
{'Key': 'Xingyu_Wan_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 17, tzinfo=tzutc()),
'ETag': '"9311226def19ce282183bc1ee0e75dfc"',
'Size': 89971,
'StorageClass': 'STANDARD'},
{'Key': 'Xiyan_Huang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 44, tzinfo=tzutc()),
'ETag': '"01e464363d1590a83a99d412e33213eb"',
'Size': 2083904,
'StorageClass': 'STANDARD'},
{'Key': 'Xiyan_Huang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 17, tzinfo=tzutc()),
'ETag': '"30088e0a62579df662734522fa9bbd91"',
'Size': 83090,
'StorageClass': 'STANDARD'},
{'Key': 'Xiyue_Yu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 44, tzinfo=tzutc()),
'ETag': '"f7d2e784dccb6192544857385a5e90ef"',
'Size': 2172219,
'StorageClass': 'STANDARD'},
{'Key': 'Xiyue_Yu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 9, tzinfo=tzutc()),
'ETag': '"b228408ce8778de19298bb8cce892f16"',
'Size': 93780,
'StorageClass': 'STANDARD'},
{'Key': 'Yanghua_Zhang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 54, tzinfo=tzutc()),
'ETag': '"88e1ea56ea432b4ee309bf9382053227"',
'Size': 2133632,
'StorageClass': 'STANDARD'},
{'Key': 'Yanghua_Zhang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 49, tzinfo=tzutc()),
'ETag': '"2bfbeb0e03b45880017bd5113662f0a2"',
'Size': 118964,
'StorageClass': 'STANDARD'},
{'Key': 'Yilin_Wang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 20, tzinfo=tzutc()),
'ETag': '"4ee707302e83f45c6c084df53cef10b5"',
'Size': 2186767,
'StorageClass': 'STANDARD'},
{'Key': 'Yilin_Wang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 46, tzinfo=tzutc()),
'ETag': '"b7d12c6d34d53ffa2aee835aac9e0b36"',
'Size': 96681,
'StorageClass': 'STANDARD'},
{'Key': 'Yiming_Xu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 7, tzinfo=tzutc()),
'ETag': '"264a0340c89cf09ae0552ae6e6984d1e"',
'Size': 2036118,
'StorageClass': 'STANDARD'},
{'Key': 'Yiming_Xu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 23, tzinfo=tzutc()),
'ETag': '"f1c53ef1d9235c436aab3ff6c571e346"',
'Size': 92025,
'StorageClass': 'STANDARD'},
{'Key': 'Yuchen_Qin.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 4, tzinfo=tzutc()),
'ETag': '"883ad346e89a10d02bfac199511dcf5b"',
'Size': 1985047,
'StorageClass': 'STANDARD'},
{'Key': 'Yuchen_Qin_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 30, tzinfo=tzutc()),
'ETag': '"bd6ce7a51a8a58ff8392ac889a3ac875"',
'Size': 100135,
'StorageClass': 'STANDARD'},
{'Key': 'Yue_Zhou.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 57, 55, tzinfo=tzutc()),
'ETag': '"1ecd243de8578b2f8db4b46fdf4e41d5"',
'Size': 1991896,
'StorageClass': 'STANDARD'},
{'Key': 'Yue_Zhou_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 42, tzinfo=tzutc()),
'ETag': '"e3d6dedf7f683c693834c496895b219a"',
'Size': 96660,
'StorageClass': 'STANDARD'},
{'Key': 'Yutong_Ouyang.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 40, tzinfo=tzutc()),
'ETag': '"66f385f8bd5c7a68999d1805aac6b162"',
'Size': 1881789,
'StorageClass': 'STANDARD'},
{'Key': 'Yutong_Ouyang_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 52, tzinfo=tzutc()),
'ETag': '"72a7c07964e1949ebf0eeaa30ca6f9d5"',
'Size': 92593,
'StorageClass': 'STANDARD'},
{'Key': 'Zaul_Alexander_Perez.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 56, 5, tzinfo=tzutc()),
'ETag': '"50da80a427a726fc4488899e1421744b"',
'Size': 2408367,
'StorageClass': 'STANDARD'},
{'Key': 'Zaul_Alexander_Perez_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 59, tzinfo=tzutc()),
'ETag': '"3982d759ad5155aaf16e45d21bcbbf8d"',
'Size': 91800,
'StorageClass': 'STANDARD'},
{'Key': 'Zihe_Liu.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 58, tzinfo=tzutc()),
'ETag': '"08142c80df6e0d18de6bb35f1a14c4aa"',
'Size': 1984410,
'StorageClass': 'STANDARD'},
{'Key': 'Zihe_Liu_aged.jpg',
'LastModified': datetime.datetime(2023, 12, 11, 6, 55, 29, tzinfo=tzutc()),
'ETag': '"c31bac2ba124388f78c4949a679f4adf"',
'Size': 82969,
'StorageClass': 'STANDARD'}]
# List all the jpg files in the new bucket --
bucket_contents = s3.list_objects_v2(Bucket=bucket)
# Check if the bucket is not empty
if 'Contents' in bucket_contents:
for item in bucket_contents['Contents']:
print(f" {item.get('Key')}")
Alfredo_Enrique_Suarez.jpg Alfredo_Enrique_Suarez_aged.jpg Alfredo_Enrique_Suarez_aged_aged.jpg Alicia_Rand_Bodoia.jpg Alicia_Rand_Bodoia_aged.jpg Allen_Gail_Smith.jpg Allen_Gail_Smith_aged.jpg Amanda_Renner_Gild.jpg Amanda_Renner_Gild_aged.jpg Andrea_Chen.jpg Andrea_Chen_aged.jpg Andrew_Dubois.jpg Andrew_Dubois_aged.jpg Andrew_Lloyd_Loftis.jpg Andrew_Lloyd_Loftis_aged.jpg Angela_Waszkiewicz.jpg Angela_Waszkiewicz_aged.jpg Anne_M_Perry.jpg Anne_M_Perry_aged.jpg Anoush_U_Shah.jpg Anoush_U_Shah_aged.jpg Anthony_X_Ayala.jpg Anthony_X_Ayala_aged.jpg Benjamin_Pyung-Hwa_Aikens.jpg Benjamin_Pyung-Hwa_Aikens_aged.jpg Bingnan_Lei.jpg Bingnan_Lei_aged.jpg Bingyu_Li.jpg Bingyu_Li_aged.jpg Bintong_Zhai.jpg Bintong_Zhai_aged.jpg Boyan_Wei.jpg Boyan_Wei_aged.jpg Boyu_Zheng.jpg Boyu_Zheng_aged.jpg Bryce_Charles_Drynan.jpg Bryce_Charles_Drynan_aged.jpg Chengzhan_Shen.jpg Chengzhan_Shen_aged.jpg Cheuk_Yui_Marcus_Chan.jpg Cheuk_Yui_Marcus_Chan_aged.jpg Chioke_K_Bellamy.jpg Chioke_K_Bellamy_aged.jpg Christopher_Craig_Kenney.jpg Christopher_Craig_Kenney_aged.jpg Christopher_David_Koontz.jpg Christopher_David_Koontz_aged.jpg Cole_Ritchey.jpg Cole_Ritchey_aged.jpg Daniel_Madden_Sheedy.jpg Daniel_Madden_Sheedy_aged.jpg Dillon_Hunter_Aryeh.jpg Dillon_Hunter_Aryeh_aged.jpg Dongqiao_Tang.jpg Dongqiao_Tang_aged.jpg Edward_Cheongjoun_Hyun.jpg Edward_Cheongjoun_Hyun_aged.jpg Elizabeth_G_Higgins.jpg Elizabeth_G_Higgins_aged.jpg Emmanuel_Thomas_George_Skora.jpg Emmanuel_Thomas_George_Skora_aged.jpg Eric_Mayo.jpg Eric_Mayo_aged.jpg Estefani_Santiago_Gatica.jpg Estefani_Santiago_Gatica_aged.jpg Evan_Anderson_Gilbert.jpg Evan_Anderson_Gilbert_aged.jpg Garhett_William_Sessions.jpg Garhett_William_Sessions_aged.jpg George_Basil_Economus.jpg George_Basil_Economus_aged.jpg Guangxin_Bao.jpg Guangxin_Bao_aged.jpg Hangfei_Lyu.jpg Hangfei_Lyu_aged.jpg Hanshuai_Shi.jpg Hanshuai_Shi_aged.jpg Haopeng_Liu.jpg Haopeng_Liu_aged.jpg Harve_E_Criqui.jpg Harve_E_Criqui_aged.jpg Helen_Kidane_Haile.jpg Helen_Kidane_Haile_aged.jpg Hewei_Shen.jpg Hewei_Shen_aged.jpg Jackson_R_Harper.jpg Jackson_R_Harper_aged.jpg Jacob_Philip_Rockaway.jpg Jacob_Philip_Rockaway_aged.jpg Jash_Sanjaybhai_Vachhani.jpg Jash_Sanjaybhai_Vachhani_aged.jpg Jax_Francis_Revfi.jpg Jax_Francis_Revfi_aged.jpg Jennifer_Ontiveros-Olivas.jpg Jennifer_Ontiveros-Olivas_aged.jpg Jeremy_Brian_Nurding.jpg Jeremy_Brian_Nurding_aged.jpg Jiacheng_Wang.jpg Jiacheng_Wang_aged.jpg Jiahao_Ma.jpg Jiahao_Ma_aged.jpg Jiahua_Wu.jpg Jiahua_Wu_aged.jpg Jiaming_Zhang.jpg Jiaming_Zhang_aged.jpg Jodie_Elizabeth_Brine.jpg Jodie_Elizabeth_Brine_aged.jpg John_William_Null.jpg John_William_Null_aged.jpg Joseph_Macon_Barker.jpg Joseph_Macon_Barker_aged.jpg Joseph_Miller_Hirsch.jpg Joseph_Miller_Hirsch_aged.jpg Kaamil_Farooqi.jpg Kaamil_Farooqi_aged.jpg Kaitlyn_R_Vickers.jpg Kaitlyn_R_Vickers_aged.jpg Kaushik_Rajaram.jpg Kaushik_Rajaram_aged.jpg Kayla_Marie_Williams.jpg Kayla_Marie_Williams_aged.jpg Kendall_Ashley_Hilson.jpg Kendall_Ashley_Hilson_aged.jpg Khushi_Arya.jpg Khushi_Arya_aged.jpg Kyle_John_Wiblishauser.jpg Kyle_John_Wiblishauser_aged.jpg Latham_Alexander_Weaver.jpg Latham_Alexander_Weaver_aged.jpg Lauren_Elizabeth_Johnson.jpg Lauren_Elizabeth_Johnson_aged.jpg Logan_Trujillo.jpg Logan_Trujillo_aged.jpg Lu_Xing.jpg Lu_Xing_aged.jpg Luying_Huang.jpg Luying_Huang_aged.jpg Manling_Shi.jpg Manling_Shi_aged.jpg Marcus_Cole_cooper.jpg Marcus_Cole_cooper_aged.jpg Mary_Martha_Milcoff.jpg Mary_Martha_Milcoff_aged.jpg Mary_Michele_Troise.jpg Mary_Michele_Troise_aged.jpg Max_Koontz.jpg Max_Koontz_aged.jpg Meghan_O_Malley.jpg Meghan_O_Malley_aged.jpg Mengyao_Liu.jpg Mengyao_Liu_aged.jpg Meryl_Criswell_Kaduboski.jpg Meryl_Criswell_Kaduboski_aged.jpg Michael_Jason_Vejsiri.jpg Michael_Jason_Vejsiri_aged.jpg Michelle_Monica_Saikali.jpg Michelle_Monica_Saikali_aged.jpg Millie_C_Garrett.jpg Millie_C_Garrett_aged.jpg Natalie_Weiner.jpg Natalie_Weiner_aged.jpg Nathalie_Lisa_Friedman.jpg Nathalie_Lisa_Friedman_aged.jpg Nathanael_Hunter_Kraus.jpg Nathanael_Hunter_Kraus_aged.jpg Nicholas_J_Sundberg.jpg Nicholas_J_Sundberg_aged.jpg Nicolson_Charles_Panos.jpg Nicolson_Charles_Panos_aged.jpg Niklas_Jozef_Baldis.jpg Niklas_Jozef_Baldis_aged.jpg Patrick_Ryan_Weimaker.jpg Patrick_Ryan_Weimaker_aged.jpg Qian_Chen.jpg Qian_Chen_aged.jpg Qin_Miao.jpg Qin_Miao_aged.jpg Quinn_Poole.jpg Quinn_Poole_aged.jpg Raleigh_Coolidge_Conway.jpg Raleigh_Coolidge_Conway_aged.jpg Reid_Powers_Walker.jpg Reid_Powers_Walker_aged.jpg Ruochen_Bao.jpg Ruochen_Bao_aged.jpg Ryan_Marek_Smith.jpg Ryan_Marek_Smith_aged.jpg Samantha_O_Brien.jpg Samantha_O_Brien_aged.jpg Savannah_Kayla_Littlejohn.jpg Savannah_Kayla_Littlejohn_aged.jpg Sebastian_Andres_Lopez-Ibanez.jpg Sebastian_Andres_Lopez-Ibanez_aged.jpg Shanay_Nimish_Sonawala.jpg Shanay_Nimish_Sonawala_aged.jpg Shenger_Zhou.jpg Shenger_Zhou_aged.jpg Shenghao_Yang.jpg Shenghao_Yang_aged.jpg Shenzhe_Lian.jpg Shenzhe_Lian_aged.jpg Shuzhe_Wang.jpg Shuzhe_Wang_aged.jpg Siyu_Lin.jpg Siyu_Lin_aged.jpg Skylour_Sebastian_Winakur.jpg Skylour_Sebastian_Winakur_aged.jpg Songlin_Liu.jpg Songlin_Liu_aged.jpg Tianyi_Chen.jpg Tianyi_Chen_aged.jpg Tianyi_Yin.jpg Tianyi_Yin_aged.jpg Tianyu_Cui.jpg Tianyu_Cui_aged.jpg Trinity_Nicole_Elliott.jpg Trinity_Nicole_Elliott_aged.jpg Wei_Tan.jpg Wei_Tan_aged.jpg Wentong_Guo.jpg Wentong_Guo_aged.jpg Whitney_Joyce_Isbell.jpg Whitney_Joyce_Isbell_aged.jpg Xiaoya_Luo.jpg Xiaoya_Luo_aged.jpg Xiaoyang_Zheng.jpg Xiaoyang_Zheng_aged.jpg Xiaoyu_Zong.jpg Xiaoyu_Zong_aged.jpg Xingyu_Wan.jpg Xingyu_Wan_aged.jpg Xiyan_Huang.jpg Xiyan_Huang_aged.jpg Xiyue_Yu.jpg Xiyue_Yu_aged.jpg Yanghua_Zhang.jpg Yanghua_Zhang_aged.jpg Yilin_Wang.jpg Yilin_Wang_aged.jpg Yiming_Xu.jpg Yiming_Xu_aged.jpg Yuchen_Qin.jpg Yuchen_Qin_aged.jpg Yue_Zhou.jpg Yue_Zhou_aged.jpg Yutong_Ouyang.jpg Yutong_Ouyang_aged.jpg Zaul_Alexander_Perez.jpg Zaul_Alexander_Perez_aged.jpg Zihe_Liu.jpg Zihe_Liu_aged.jpg
II. Working with AWS Rekognition¶
1. Detect Faces¶
# Create a function to detect face and some characteristics of the face
def detect_faces(photo, bucket, region):
session = boto3.Session()
client = session.client('rekognition', region_name=region)
response = client.detect_faces(Image={'S3Object':{'Bucket':bucket,'Name':photo}},
Attributes=['ALL'])
print('Detected faces for ' + photo)
for faceDetail in response['FaceDetails']:
print(f"The detected face is between {faceDetail['AgeRange']['Low']} and {faceDetail['AgeRange']['High']} years old")
print('Here are the other attributes:')
print(json.dumps(faceDetail, indent=4, sort_keys=True))
# Access predictions for individual face details and print them
print(f"Gender : {faceDetail['Gender']}" )
print(f"Smile : {faceDetail['Smile']}" )
print(f"Eyeglasses: {faceDetail['Eyeglasses']}" )
print(f"Emotions : {faceDetail['Emotions'][0]}" )
return len(response['FaceDetails'])
# test the function on Hanshuai's photo
photo='Boyu_Zheng.jpg'
face_count = detect_faces(photo, bucket, region)
print("Faces detected: " + str(face_count))
Detected faces for Boyu_Zheng.jpg
The detected face is between 19 and 27 years old
Here are the other attributes:
{
"AgeRange": {
"High": 27,
"Low": 19
},
"Beard": {
"Confidence": 86.75776672363281,
"Value": false
},
"BoundingBox": {
"Height": 0.2640996277332306,
"Left": 0.4397003650665283,
"Top": 0.2011374682188034,
"Width": 0.1429976224899292
},
"Confidence": 99.99974822998047,
"Emotions": [
{
"Confidence": 95.41015625,
"Type": "CALM"
},
{
"Confidence": 0.7166544198989868,
"Type": "HAPPY"
},
{
"Confidence": 0.06914138793945312,
"Type": "SAD"
},
{
"Confidence": 0.0621795654296875,
"Type": "CONFUSED"
},
{
"Confidence": 0.025779008865356445,
"Type": "SURPRISED"
},
{
"Confidence": 0.0011563301086425781,
"Type": "ANGRY"
},
{
"Confidence": 5.9604644775390625e-06,
"Type": "DISGUSTED"
},
{
"Confidence": 0.0,
"Type": "FEAR"
}
],
"EyeDirection": {
"Confidence": 99.98881530761719,
"Pitch": -12.256471633911133,
"Yaw": -2.290989398956299
},
"Eyeglasses": {
"Confidence": 100.0,
"Value": true
},
"EyesOpen": {
"Confidence": 98.2108154296875,
"Value": true
},
"FaceOccluded": {
"Confidence": 99.98217010498047,
"Value": false
},
"Gender": {
"Confidence": 99.9991683959961,
"Value": "Male"
},
"Landmarks": [
{
"Type": "eyeLeft",
"X": 0.4801853597164154,
"Y": 0.29861554503440857
},
{
"Type": "eyeRight",
"X": 0.5443750023841858,
"Y": 0.3003222644329071
},
{
"Type": "mouthLeft",
"X": 0.48522311449050903,
"Y": 0.40067818760871887
},
{
"Type": "mouthRight",
"X": 0.5386055111885071,
"Y": 0.4020099341869354
},
{
"Type": "nose",
"X": 0.5143008232116699,
"Y": 0.34935909509658813
},
{
"Type": "leftEyeBrowLeft",
"X": 0.45523348450660706,
"Y": 0.27657249569892883
},
{
"Type": "leftEyeBrowRight",
"X": 0.4942696690559387,
"Y": 0.2678292393684387
},
{
"Type": "leftEyeBrowUp",
"X": 0.47512757778167725,
"Y": 0.26287466287612915
},
{
"Type": "rightEyeBrowLeft",
"X": 0.5313292145729065,
"Y": 0.26877379417419434
},
{
"Type": "rightEyeBrowRight",
"X": 0.5673072934150696,
"Y": 0.27941927313804626
},
{
"Type": "rightEyeBrowUp",
"X": 0.5497257709503174,
"Y": 0.2647820711135864
},
{
"Type": "leftEyeLeft",
"X": 0.4682922959327698,
"Y": 0.29852062463760376
},
{
"Type": "leftEyeRight",
"X": 0.492779016494751,
"Y": 0.2999924421310425
},
{
"Type": "leftEyeUp",
"X": 0.48002102971076965,
"Y": 0.29335248470306396
},
{
"Type": "leftEyeDown",
"X": 0.48035070300102234,
"Y": 0.30313926935195923
},
{
"Type": "rightEyeLeft",
"X": 0.5315899848937988,
"Y": 0.3010297417640686
},
{
"Type": "rightEyeRight",
"X": 0.555471658706665,
"Y": 0.3007638454437256
},
{
"Type": "rightEyeUp",
"X": 0.5445922613143921,
"Y": 0.295041561126709
},
{
"Type": "rightEyeDown",
"X": 0.5440212488174438,
"Y": 0.30477994680404663
},
{
"Type": "noseLeft",
"X": 0.5004645586013794,
"Y": 0.3624711036682129
},
{
"Type": "noseRight",
"X": 0.5244531035423279,
"Y": 0.3630351424217224
},
{
"Type": "mouthUp",
"X": 0.512580394744873,
"Y": 0.3863055408000946
},
{
"Type": "mouthDown",
"X": 0.5120923519134521,
"Y": 0.41725146770477295
},
{
"Type": "leftPupil",
"X": 0.4801853597164154,
"Y": 0.29861554503440857
},
{
"Type": "rightPupil",
"X": 0.5443750023841858,
"Y": 0.3003222644329071
},
{
"Type": "upperJawlineLeft",
"X": 0.43788036704063416,
"Y": 0.3065941631793976
},
{
"Type": "midJawlineLeft",
"X": 0.4508345127105713,
"Y": 0.41418954730033875
},
{
"Type": "chinBottom",
"X": 0.5108017325401306,
"Y": 0.4707484245300293
},
{
"Type": "midJawlineRight",
"X": 0.5657703876495361,
"Y": 0.41692402958869934
},
{
"Type": "upperJawlineRight",
"X": 0.5790319442749023,
"Y": 0.310108482837677
}
],
"MouthOpen": {
"Confidence": 69.37347412109375,
"Value": false
},
"Mustache": {
"Confidence": 96.23954772949219,
"Value": false
},
"Pose": {
"Pitch": 7.001773357391357,
"Roll": 1.6149998903274536,
"Yaw": 2.82893967628479
},
"Quality": {
"Brightness": 81.99880981445312,
"Sharpness": 96.61495208740234
},
"Smile": {
"Confidence": 99.47989654541016,
"Value": false
},
"Sunglasses": {
"Confidence": 100.0,
"Value": false
}
}
Gender : {'Value': 'Male', 'Confidence': 99.9991683959961}
Smile : {'Value': False, 'Confidence': 99.47989654541016}
Eyeglasses: {'Value': True, 'Confidence': 100.0}
Emotions : {'Type': 'CALM', 'Confidence': 95.41015625}
Faces detected: 1
2. Compare Faces¶
### Example
# Create a function to comparing two faces
def compare_faces(bucket, sourceFile, targetFile):
client = boto3.client('rekognition')
response = client.compare_faces(SimilarityThreshold=0,
SourceImage={'S3Object': {'Bucket': bucket, 'Name': sourceFile}},
TargetImage={'S3Object': {'Bucket': bucket, 'Name': targetFile}})
for faceMatch in response['FaceMatches']:
position = faceMatch['Face']['BoundingBox']
print(f'face similarity {faceMatch["Similarity"]:.2f}%')
return faceMatch["Similarity"]
# S3 object keys (file names in the bucket)
source_file = 'Boyu_Zheng.jpg'
target_file = 'Boyu_Zheng_aged.jpg'
match_similarity = compare_faces(bucket, source_file, target_file)
face similarity 91.93%
Display two compared images side by side
def display_images_side_by_side(bucket, image_key1, image_key2, similarity):
s3 = boto3.client('s3')
# Get the images from S3
def get_image_from_s3(bucket, key):
response = s3.get_object(Bucket=bucket, Key=key)
image_data = response['Body'].read()
return Image.open(BytesIO(image_data))
# Create a new blank image with a size equal to the sum of the widths of the two images
image_key1 = get_image_from_s3(bucket, image_key1)
image_key2 = get_image_from_s3(bucket, image_key2)
# resize the image1 to the same size as image2
image_key1 = image_key1.resize(image_key2.size)
new_image_width = image_key1.width * 2
new_image_height = image_key1.height
new_image = Image.new("RGB", (new_image_width, new_image_height))
# Paste the first image onto the new image at position (0, 0)
new_image.paste(image_key1, (0, 0))
# Paste the second image onto the new image at position (image_key1.width, 0)
new_image.paste(image_key2, (image_key1.width, 0))
# Add text to the image
text = '{} % MATCH'.format(int(similarity))
font_path = "2024_students/Roboto-Medium.ttf" # Ensure this path is correct
font = ImageFont.truetype(font_path, size=48)
draw = ImageDraw.Draw(new_image)
# Calculate the text position
left, top, right, bottom = draw.textbbox((0,0), text, font)
text_width = right - left
text_height = bottom - top
text_x = (new_image_width - text_width)/2
text_y = (new_image_height - text_height)/2
# Draw the text over the rectangle
draw.text((text_x, text_y), text, font=font, fill=(0, 0, 0, 255))
# Display the image
display(new_image)
# Example usage
# S3 object keys (file names in the bucket)
image_key1 = 'Boyu_Zheng.jpg'
image_key2 = 'Boyu_Zheng_aged.jpg'
display_images_side_by_side(bucket, image_key1, image_key2, similarity = match_similarity)
3. Make a collection¶
Some files is not necessary to be uploaded to S3, thus here I create a function to remove them from the bucket
def delete_file_from_s3(bucket_name, file_key):
# Create an S3 client
s3 = boto3.client('s3')
# Delete the file
try:
s3.delete_object(Bucket=bucket_name, Key=file_key)
print(f"File {file_key} deleted from {bucket_name}")
except Exception as e:
print(f"Error occurred: {e}")
# Example usage
bucket_name = 'nam-final-exam-1'
file_key = 'Roboto-Medium.ttf'
delete_file_from_s3(bucket_name, file_key)
File Roboto-Medium.ttf deleted from nam-final-exam-1
# Add faces to a collection
def create_rekognition_collection(collection_id):
client = boto3.client('rekognition')
# Check if the collection already exists
existing_collections = client.list_collections()
if collection_id in existing_collections['CollectionIds']:
print(f"Collection {collection_id} already exists.")
return
# Create the collection if it doesn't exist
try:
client.create_collection(CollectionId=collection_id)
print(f"Collection {collection_id} created.")
except client.exceptions.ResourceAlreadyExistsException:
print(f"Collection {collection_id} already exists.")
def add_faces_to_collection(bucket, collection_id):
s3_client = boto3.client('s3')
rekognition_client = boto3.client('rekognition')
# List objects in the bucket
response = s3_client.list_objects_v2(Bucket=bucket)
if 'Contents' in response:
for obj in response['Contents']:
image = obj['Key']
# Index the face(s) in the image
rekognition_client.index_faces(CollectionId=collection_id,
Image={'S3Object': {'Bucket': bucket, 'Name': image}},
ExternalImageId=image, # this is the name of the person!!!
MaxFaces=1,
QualityFilter="AUTO",
DetectionAttributes=['ALL'])
print(f"Added {image} to collection {collection_id}")
# Example usage
collection_id = "student_faces"
create_rekognition_collection(collection_id)
add_faces_to_collection(bucket, collection_id)
Collection student_faces already exists. Added Alfredo_Enrique_Suarez.jpg to collection student_faces Added Alfredo_Enrique_Suarez_aged.jpg to collection student_faces Added Alfredo_Enrique_Suarez_aged_aged.jpg to collection student_faces Added Alicia_Rand_Bodoia.jpg to collection student_faces Added Alicia_Rand_Bodoia_aged.jpg to collection student_faces Added Allen_Gail_Smith.jpg to collection student_faces Added Allen_Gail_Smith_aged.jpg to collection student_faces Added Amanda_Renner_Gild.jpg to collection student_faces Added Amanda_Renner_Gild_aged.jpg to collection student_faces Added Andrea_Chen.jpg to collection student_faces Added Andrea_Chen_aged.jpg to collection student_faces Added Andrew_Dubois.jpg to collection student_faces Added Andrew_Dubois_aged.jpg to collection student_faces Added Andrew_Lloyd_Loftis.jpg to collection student_faces Added Andrew_Lloyd_Loftis_aged.jpg to collection student_faces Added Angela_Waszkiewicz.jpg to collection student_faces Added Angela_Waszkiewicz_aged.jpg to collection student_faces Added Anne_M_Perry.jpg to collection student_faces Added Anne_M_Perry_aged.jpg to collection student_faces Added Anoush_U_Shah.jpg to collection student_faces Added Anoush_U_Shah_aged.jpg to collection student_faces Added Anthony_X_Ayala.jpg to collection student_faces Added Anthony_X_Ayala_aged.jpg to collection student_faces Added Benjamin_Pyung-Hwa_Aikens.jpg to collection student_faces Added Benjamin_Pyung-Hwa_Aikens_aged.jpg to collection student_faces Added Bingnan_Lei.jpg to collection student_faces Added Bingnan_Lei_aged.jpg to collection student_faces Added Bingyu_Li.jpg to collection student_faces Added Bingyu_Li_aged.jpg to collection student_faces Added Bintong_Zhai.jpg to collection student_faces Added Bintong_Zhai_aged.jpg to collection student_faces Added Boyan_Wei.jpg to collection student_faces Added Boyan_Wei_aged.jpg to collection student_faces Added Boyu_Zheng.jpg to collection student_faces Added Boyu_Zheng_aged.jpg to collection student_faces Added Bryce_Charles_Drynan.jpg to collection student_faces Added Bryce_Charles_Drynan_aged.jpg to collection student_faces Added Chengzhan_Shen.jpg to collection student_faces Added Chengzhan_Shen_aged.jpg to collection student_faces Added Cheuk_Yui_Marcus_Chan.jpg to collection student_faces Added Cheuk_Yui_Marcus_Chan_aged.jpg to collection student_faces Added Chioke_K_Bellamy.jpg to collection student_faces Added Chioke_K_Bellamy_aged.jpg to collection student_faces Added Christopher_Craig_Kenney.jpg to collection student_faces Added Christopher_Craig_Kenney_aged.jpg to collection student_faces Added Christopher_David_Koontz.jpg to collection student_faces Added Christopher_David_Koontz_aged.jpg to collection student_faces Added Cole_Ritchey.jpg to collection student_faces Added Cole_Ritchey_aged.jpg to collection student_faces Added Daniel_Madden_Sheedy.jpg to collection student_faces Added Daniel_Madden_Sheedy_aged.jpg to collection student_faces Added Dillon_Hunter_Aryeh.jpg to collection student_faces Added Dillon_Hunter_Aryeh_aged.jpg to collection student_faces Added Dongqiao_Tang.jpg to collection student_faces Added Dongqiao_Tang_aged.jpg to collection student_faces Added Edward_Cheongjoun_Hyun.jpg to collection student_faces Added Edward_Cheongjoun_Hyun_aged.jpg to collection student_faces Added Elizabeth_G_Higgins.jpg to collection student_faces Added Elizabeth_G_Higgins_aged.jpg to collection student_faces Added Emmanuel_Thomas_George_Skora.jpg to collection student_faces Added Emmanuel_Thomas_George_Skora_aged.jpg to collection student_faces Added Eric_Mayo.jpg to collection student_faces Added Eric_Mayo_aged.jpg to collection student_faces Added Estefani_Santiago_Gatica.jpg to collection student_faces Added Estefani_Santiago_Gatica_aged.jpg to collection student_faces Added Evan_Anderson_Gilbert.jpg to collection student_faces Added Evan_Anderson_Gilbert_aged.jpg to collection student_faces Added Garhett_William_Sessions.jpg to collection student_faces Added Garhett_William_Sessions_aged.jpg to collection student_faces Added George_Basil_Economus.jpg to collection student_faces Added George_Basil_Economus_aged.jpg to collection student_faces Added Guangxin_Bao.jpg to collection student_faces Added Guangxin_Bao_aged.jpg to collection student_faces Added Hangfei_Lyu.jpg to collection student_faces Added Hangfei_Lyu_aged.jpg to collection student_faces Added Hanshuai_Shi.jpg to collection student_faces Added Hanshuai_Shi_aged.jpg to collection student_faces Added Haopeng_Liu.jpg to collection student_faces Added Haopeng_Liu_aged.jpg to collection student_faces Added Harve_E_Criqui.jpg to collection student_faces Added Harve_E_Criqui_aged.jpg to collection student_faces Added Helen_Kidane_Haile.jpg to collection student_faces Added Helen_Kidane_Haile_aged.jpg to collection student_faces Added Hewei_Shen.jpg to collection student_faces Added Hewei_Shen_aged.jpg to collection student_faces Added Jackson_R_Harper.jpg to collection student_faces Added Jackson_R_Harper_aged.jpg to collection student_faces Added Jacob_Philip_Rockaway.jpg to collection student_faces Added Jacob_Philip_Rockaway_aged.jpg to collection student_faces Added Jash_Sanjaybhai_Vachhani.jpg to collection student_faces Added Jash_Sanjaybhai_Vachhani_aged.jpg to collection student_faces Added Jax_Francis_Revfi.jpg to collection student_faces Added Jax_Francis_Revfi_aged.jpg to collection student_faces Added Jennifer_Ontiveros-Olivas.jpg to collection student_faces Added Jennifer_Ontiveros-Olivas_aged.jpg to collection student_faces Added Jeremy_Brian_Nurding.jpg to collection student_faces Added Jeremy_Brian_Nurding_aged.jpg to collection student_faces Added Jiacheng_Wang.jpg to collection student_faces Added Jiacheng_Wang_aged.jpg to collection student_faces Added Jiahao_Ma.jpg to collection student_faces Added Jiahao_Ma_aged.jpg to collection student_faces Added Jiahua_Wu.jpg to collection student_faces Added Jiahua_Wu_aged.jpg to collection student_faces Added Jiaming_Zhang.jpg to collection student_faces Added Jiaming_Zhang_aged.jpg to collection student_faces Added Jodie_Elizabeth_Brine.jpg to collection student_faces Added Jodie_Elizabeth_Brine_aged.jpg to collection student_faces Added John_William_Null.jpg to collection student_faces Added John_William_Null_aged.jpg to collection student_faces Added Joseph_Macon_Barker.jpg to collection student_faces Added Joseph_Macon_Barker_aged.jpg to collection student_faces Added Joseph_Miller_Hirsch.jpg to collection student_faces Added Joseph_Miller_Hirsch_aged.jpg to collection student_faces Added Kaamil_Farooqi.jpg to collection student_faces Added Kaamil_Farooqi_aged.jpg to collection student_faces Added Kaitlyn_R_Vickers.jpg to collection student_faces Added Kaitlyn_R_Vickers_aged.jpg to collection student_faces Added Kaushik_Rajaram.jpg to collection student_faces Added Kaushik_Rajaram_aged.jpg to collection student_faces Added Kayla_Marie_Williams.jpg to collection student_faces Added Kayla_Marie_Williams_aged.jpg to collection student_faces Added Kendall_Ashley_Hilson.jpg to collection student_faces Added Kendall_Ashley_Hilson_aged.jpg to collection student_faces Added Khushi_Arya.jpg to collection student_faces Added Khushi_Arya_aged.jpg to collection student_faces Added Kyle_John_Wiblishauser.jpg to collection student_faces Added Kyle_John_Wiblishauser_aged.jpg to collection student_faces Added Latham_Alexander_Weaver.jpg to collection student_faces Added Latham_Alexander_Weaver_aged.jpg to collection student_faces Added Lauren_Elizabeth_Johnson.jpg to collection student_faces Added Lauren_Elizabeth_Johnson_aged.jpg to collection student_faces Added Logan_Trujillo.jpg to collection student_faces Added Logan_Trujillo_aged.jpg to collection student_faces Added Lu_Xing.jpg to collection student_faces Added Lu_Xing_aged.jpg to collection student_faces Added Luying_Huang.jpg to collection student_faces Added Luying_Huang_aged.jpg to collection student_faces Added Manling_Shi.jpg to collection student_faces Added Manling_Shi_aged.jpg to collection student_faces Added Marcus_Cole_cooper.jpg to collection student_faces Added Marcus_Cole_cooper_aged.jpg to collection student_faces Added Mary_Martha_Milcoff.jpg to collection student_faces Added Mary_Martha_Milcoff_aged.jpg to collection student_faces Added Mary_Michele_Troise.jpg to collection student_faces Added Mary_Michele_Troise_aged.jpg to collection student_faces Added Max_Koontz.jpg to collection student_faces Added Max_Koontz_aged.jpg to collection student_faces Added Meghan_O_Malley.jpg to collection student_faces Added Meghan_O_Malley_aged.jpg to collection student_faces Added Mengyao_Liu.jpg to collection student_faces Added Mengyao_Liu_aged.jpg to collection student_faces Added Meryl_Criswell_Kaduboski.jpg to collection student_faces Added Meryl_Criswell_Kaduboski_aged.jpg to collection student_faces Added Michael_Jason_Vejsiri.jpg to collection student_faces Added Michael_Jason_Vejsiri_aged.jpg to collection student_faces Added Michelle_Monica_Saikali.jpg to collection student_faces Added Michelle_Monica_Saikali_aged.jpg to collection student_faces Added Millie_C_Garrett.jpg to collection student_faces Added Millie_C_Garrett_aged.jpg to collection student_faces Added Natalie_Weiner.jpg to collection student_faces Added Natalie_Weiner_aged.jpg to collection student_faces Added Nathalie_Lisa_Friedman.jpg to collection student_faces Added Nathalie_Lisa_Friedman_aged.jpg to collection student_faces Added Nathanael_Hunter_Kraus.jpg to collection student_faces Added Nathanael_Hunter_Kraus_aged.jpg to collection student_faces Added Nicholas_J_Sundberg.jpg to collection student_faces Added Nicholas_J_Sundberg_aged.jpg to collection student_faces Added Nicolson_Charles_Panos.jpg to collection student_faces Added Nicolson_Charles_Panos_aged.jpg to collection student_faces Added Niklas_Jozef_Baldis.jpg to collection student_faces Added Niklas_Jozef_Baldis_aged.jpg to collection student_faces Added Patrick_Ryan_Weimaker.jpg to collection student_faces Added Patrick_Ryan_Weimaker_aged.jpg to collection student_faces Added Qian_Chen.jpg to collection student_faces Added Qian_Chen_aged.jpg to collection student_faces Added Qin_Miao.jpg to collection student_faces Added Qin_Miao_aged.jpg to collection student_faces Added Quinn_Poole.jpg to collection student_faces Added Quinn_Poole_aged.jpg to collection student_faces Added Raleigh_Coolidge_Conway.jpg to collection student_faces Added Raleigh_Coolidge_Conway_aged.jpg to collection student_faces Added Reid_Powers_Walker.jpg to collection student_faces Added Reid_Powers_Walker_aged.jpg to collection student_faces Added Ruochen_Bao.jpg to collection student_faces Added Ruochen_Bao_aged.jpg to collection student_faces Added Ryan_Marek_Smith.jpg to collection student_faces Added Ryan_Marek_Smith_aged.jpg to collection student_faces Added Samantha_O_Brien.jpg to collection student_faces Added Samantha_O_Brien_aged.jpg to collection student_faces Added Savannah_Kayla_Littlejohn.jpg to collection student_faces Added Savannah_Kayla_Littlejohn_aged.jpg to collection student_faces Added Sebastian_Andres_Lopez-Ibanez.jpg to collection student_faces Added Sebastian_Andres_Lopez-Ibanez_aged.jpg to collection student_faces Added Shanay_Nimish_Sonawala.jpg to collection student_faces Added Shanay_Nimish_Sonawala_aged.jpg to collection student_faces Added Shenger_Zhou.jpg to collection student_faces Added Shenger_Zhou_aged.jpg to collection student_faces Added Shenghao_Yang.jpg to collection student_faces Added Shenghao_Yang_aged.jpg to collection student_faces Added Shenzhe_Lian.jpg to collection student_faces Added Shenzhe_Lian_aged.jpg to collection student_faces Added Shuzhe_Wang.jpg to collection student_faces Added Shuzhe_Wang_aged.jpg to collection student_faces Added Siyu_Lin.jpg to collection student_faces Added Siyu_Lin_aged.jpg to collection student_faces Added Skylour_Sebastian_Winakur.jpg to collection student_faces Added Skylour_Sebastian_Winakur_aged.jpg to collection student_faces Added Songlin_Liu.jpg to collection student_faces Added Songlin_Liu_aged.jpg to collection student_faces Added Tianyi_Chen.jpg to collection student_faces Added Tianyi_Chen_aged.jpg to collection student_faces Added Tianyi_Yin.jpg to collection student_faces Added Tianyi_Yin_aged.jpg to collection student_faces Added Tianyu_Cui.jpg to collection student_faces Added Tianyu_Cui_aged.jpg to collection student_faces Added Trinity_Nicole_Elliott.jpg to collection student_faces Added Trinity_Nicole_Elliott_aged.jpg to collection student_faces Added Wei_Tan.jpg to collection student_faces Added Wei_Tan_aged.jpg to collection student_faces Added Wentong_Guo.jpg to collection student_faces Added Wentong_Guo_aged.jpg to collection student_faces Added Whitney_Joyce_Isbell.jpg to collection student_faces Added Whitney_Joyce_Isbell_aged.jpg to collection student_faces Added Xiaoya_Luo.jpg to collection student_faces Added Xiaoya_Luo_aged.jpg to collection student_faces Added Xiaoyang_Zheng.jpg to collection student_faces Added Xiaoyang_Zheng_aged.jpg to collection student_faces Added Xiaoyu_Zong.jpg to collection student_faces Added Xiaoyu_Zong_aged.jpg to collection student_faces Added Xingyu_Wan.jpg to collection student_faces Added Xingyu_Wan_aged.jpg to collection student_faces Added Xiyan_Huang.jpg to collection student_faces Added Xiyan_Huang_aged.jpg to collection student_faces Added Xiyue_Yu.jpg to collection student_faces Added Xiyue_Yu_aged.jpg to collection student_faces Added Yanghua_Zhang.jpg to collection student_faces Added Yanghua_Zhang_aged.jpg to collection student_faces Added Yilin_Wang.jpg to collection student_faces Added Yilin_Wang_aged.jpg to collection student_faces Added Yiming_Xu.jpg to collection student_faces Added Yiming_Xu_aged.jpg to collection student_faces Added Yuchen_Qin.jpg to collection student_faces Added Yuchen_Qin_aged.jpg to collection student_faces Added Yue_Zhou.jpg to collection student_faces Added Yue_Zhou_aged.jpg to collection student_faces Added Yutong_Ouyang.jpg to collection student_faces Added Yutong_Ouyang_aged.jpg to collection student_faces Added Zaul_Alexander_Perez.jpg to collection student_faces Added Zaul_Alexander_Perez_aged.jpg to collection student_faces Added Zihe_Liu.jpg to collection student_faces Added Zihe_Liu_aged.jpg to collection student_faces
Search Faces by Image¶
client=boto3.client('rekognition')
response=client.search_faces_by_image(CollectionId=collection_id,
Image={'S3Object':{'Bucket':bucket_name,'Name':'Xiyue_Yu.jpg'}},
FaceMatchThreshold=90,
MaxFaces=1)
faceMatches=response['FaceMatches']
print ('Matching faces')
for match in faceMatches:
print ('FaceId:' + match['Face']['FaceId'])
print ('Similarity: ' + "{:.2f}".format(match['Similarity']) + "%")
Matching faces FaceId:813d537e-d7f0-47df-bab3-128f85539673 Similarity: 100.00%
match_file = pd.read_excel("image_name.xlsx")
match_file.head()
| match_id | source_image | name | target_image | expected_match | |
|---|---|---|---|---|---|
| 0 | 100 | Bingyu_Li.jpg | Bingyu_Li | Bingyu_Li_aged.jpg | match |
| 1 | 101 | Whitney_Joyce_Isbell.jpg | Whitney_Joyce_Isbell | Whitney_Joyce_Isbell_aged.jpg | match |
| 2 | 102 | Qian_Chen.jpg | Qian_Chen | Qian_Chen_aged.jpg | match |
| 3 | 103 | Hanshuai_Shi.jpg | Hanshuai_Shi | Hanshuai_Shi_aged.jpg | match |
| 4 | 104 | Ruochen_Bao.jpg | Ruochen_Bao | Ruochen_Bao_aged.jpg | match |
def compare_faces(bucket, sourceFile, targetFile):
client = boto3.client('rekognition')
similarity = 0 # Default value in case no face match is found
try:
response = client.compare_faces(SimilarityThreshold=80,
SourceImage={'S3Object': {'Bucket': bucket, 'Name': sourceFile}},
TargetImage={'S3Object': {'Bucket': bucket, 'Name': targetFile}})
# Check if any face matches are found
if response['FaceMatches']:
faceMatch = response['FaceMatches'][0] # Get the first match
similarity = faceMatch["Similarity"]
except Exception as e:
print(f"An error occurred: {e}")
return similarity
match_file['match_similarity'] = match_file.apply(lambda row: compare_faces(bucket_name, row['source_image'], row['target_image']), axis=1)
# use threshold = 0.6 to determine match or no match
match_file['predicted_match'] = np.where(match_file['match_similarity'] > 35, 'match','no match')
match_file.head()
An error occurred: An error occurred (InvalidParameterException) when calling the CompareFaces operation: Request has invalid parameters An error occurred: An error occurred (InvalidS3ObjectException) when calling the CompareFaces operation: Unable to get object metadata from S3. Check object key, region and/or access permissions. An error occurred: An error occurred (InvalidS3ObjectException) when calling the CompareFaces operation: Unable to get object metadata from S3. Check object key, region and/or access permissions. An error occurred: An error occurred (InvalidS3ObjectException) when calling the CompareFaces operation: Unable to get object metadata from S3. Check object key, region and/or access permissions.
| match_id | source_image | name | target_image | expected_match | match_similarity | predicted_match | |
|---|---|---|---|---|---|---|---|
| 0 | 100 | Bingyu_Li.jpg | Bingyu_Li | Bingyu_Li_aged.jpg | match | 98.274345 | match |
| 1 | 101 | Whitney_Joyce_Isbell.jpg | Whitney_Joyce_Isbell | Whitney_Joyce_Isbell_aged.jpg | match | 97.822098 | match |
| 2 | 102 | Qian_Chen.jpg | Qian_Chen | Qian_Chen_aged.jpg | match | 0.000000 | no match |
| 3 | 103 | Hanshuai_Shi.jpg | Hanshuai_Shi | Hanshuai_Shi_aged.jpg | match | 89.793312 | match |
| 4 | 104 | Ruochen_Bao.jpg | Ruochen_Bao | Ruochen_Bao_aged.jpg | match | 0.000000 | no match |
III. Model Evaluation¶
# Calculate confusion matrix
matrix = confusion_matrix(match_file['expected_match'],
match_file['predicted_match'],
labels=["match", "no match"])
# Calculate confusion matrix
y_true = match_file['expected_match']
y_pred = match_file['predicted_match']
labels = ["match", "no match"]
matrix = confusion_matrix(y_true, y_pred, labels=labels)
# Calculate Specificity
TN = matrix[1][1]
FP = matrix[1][0]
specificity = TN / (TN + FP)
# Calculate Accuracy, Precision and Recall
accuracy = accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred, pos_label="match")
recall = recall_score(y_true, y_pred, pos_label="match")
print("Accuracy:", accuracy)
print("Precision:", precision)
print("Recall:", recall)
print("Specificity:", specificity)
Accuracy: 0.7897727272727273 Precision: 1.0 Recall: 0.7063492063492064 Specificity: 1.0
# Plotting using seaborn
plt.figure(figsize=(8, 6))
sns.heatmap(matrix, annot=True, fmt="d", xticklabels=labels, yticklabels=labels, cmap="Blues")
plt.title("Confusion Matrix of AWS Rekognition Face Comparison")
plt.ylabel('Actual')
plt.xlabel('Predicted')
plt.show()
# a histogram to visualize the distribution of the match_similarity
plt.figure(figsize=(8, 6))
sns.histplot(data=match_file, x="match_similarity", hue="expected_match", kde=False)
plt.title("Match Similarity Distribution of AWS Rekognition Face Comparison")
plt.show()
IV. Examples Testing Models¶
1. Expected Match¶
For the first expected match comparision, I will examine Boyu face and his aged version
match_similarity = compare_faces(bucket, 'Boyu_Zheng.jpg', 'Boyu_Zheng_aged.jpg')
print(f"Similarity between the two images is {match_similarity:.2f}%")
Similarity between the two images is 91.93%
image_key1 = 'Boyu_Zheng.jpg'
image_key2 = 'Boyu_Zheng_aged.jpg'
display_images_side_by_side(bucket, image_key1, image_key2, similarity = match_similarity)
For the second expected match comparision, I will examine Tianyu_Yin's face and her aged version
match_similarity = compare_faces(bucket, 'Tianyi_Yin.jpg', 'Tianyi_Yin_aged.jpg')
print(f"Similarity between the two images is {match_similarity:.2f}%")
Similarity between the two images is 0.00%
# display two imagtes next to each other
image_key1 = 'Tianyi_Yin.jpg'
image_key2 = 'Tianyi_Yin_aged.jpg'
display_images_side_by_side(bucket, image_key1, image_key2, similarity = match_similarity)
Although this is the same person, the model still fails to recognize the difference, just like in the face_recognition library that we analyze earlier.
2. Expected Non-Match¶
For the first epxected non-match comparision, I will examine the facial comparision between aged Boyu and aged Wei Tan
# Compare similarity between the two faces
match_similarity = compare_faces(bucket, 'Boyu_Zheng_aged.jpg', 'Wei_Tan_aged.jpg')
print(f"Similarity between the two images is {match_similarity:.2f}%")
Similarity between the two images is 88.54%
image_key1 = 'Boyu_Zheng_aged.jpg'
image_key2 = 'Wei_Tan_aged.jpg'
display_images_side_by_side(bucket, image_key1, image_key2, similarity = match_similarity)
Though AWS rekognition's performance from the from confusion matrix was extremely high, especially with a perfect score for specificity, it still falsely identify the difference between these two images.
For teh second expected non-match comparision, I will examine Chnzhan Shen and the aged version of Xiaoya Luo
# Compare similarity between the two faces
match_similarity = compare_faces(bucket, 'Chengzhan_Shen.jpg', 'Xiaoya_Luo_aged.jpg')
print(f"Similarity between the two images is {match_similarity:.2f}%")
Similarity between the two images is 0.00%
image_key1 = 'Chengzhan_Shen.jpg'
image_key2 = 'Xiaoya_Luo_aged.jpg'
display_images_side_by_side(bucket, image_key1, image_key2, similarity = match_similarity)
AWS Rekognition was able to accurately identify that the two images are from two different people, indicating by 0 match similarity